JavaScriptで匿名型のオブジェクトを作成するのがいかに簡単かが大好きです。
//JavaScript
var myObj = {
foo: "Foo value",
bar: "Bar value"
};
console.log(myObj.foo); //Output: Foo value
だから私はいつもこの種のオブジェクトをjavascriptのようにPHPで書こうとします:
//PHP >= 5.4
$myObj = (object) [
"foo" => "Foo value",
"bar" => "Bar value"
];
//PHP < 5.4
$myObj = (object) array(
"foo" => "Foo value",
"bar" => "Bar value"
);
echo $myObj->foo; //Output: Foo value
ただし、これは基本的に配列であるため、jsのようにプロパティに無名関数を割り当てることはできません。
//JavaScript
var myObj = {
foo: "Foo value",
bar: function(greeting) {
return greeting + " bar";
}
};
console.log(myObj.bar("Hello")); //Output: Hello bar
//PHP >= 5.4
$myObj = (object) [
"foo" => "Foo value",
"bar" => function($greeting) {
return $greeting . " bar";
}
];
var_dump($myObj->bar("Hello")); //Throw 'undefined function' error
var_dump($myObj->bar); //Output: "object(Closure)"
まあ、あなたはそれをすることができますが、IMOは実用的ではありません/きれいです:
$barFunc = $myObj->bar;
echo $barFunc("Hello"); //Output: Hello bar
また、このSynthaxを使用すると、面白い驚きを見つけることができますが、ほとんどの場合は問題なく動作します。
$var = (object) (boolean) (string) (int) (array) new StdClass;
安全のためにね