JavaScript로 익명 유형의 객체를 만드는 것이 얼마나 쉬운 지 좋아합니다.
//JavaScript
var myObj = {
foo: "Foo value",
bar: "Bar value"
};
console.log(myObj.foo); //Output: Foo value
그래서 항상 자바 스크립트처럼 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;
알다시피, 안전합니다.