Note: Tôi đã ngưng tụ bài này vào người wiki của tôi: http://wiki.chacha102.com/Lambda - Thưởng thứcChức năng Lambda trong PHP là không logic
Tôi gặp một số rắc rối với các chức năng Lambda phong cách trong PHP.
Đầu tiên, công trình này:
$foo = function(){ echo "bar"; };
$foo();
Thứ hai, công trình này:
class Bar{
public function foo(){
echo "Bar";
}
Thứ ba, này hoạt động:
$foo = new stdClass;
$foo->bar = function(){ echo "bar"; };
$test = $foo->bar;
$test();
Nhưng, điều này không làm việc:
$foo = new stdClass;
$foo->bar = function(){ echo "bar"; };
$foo->bar();
Và, điều này không làm việc
class Bar{
public function foo(){
echo "Bar";
}
$foo = new Bar;
$foo->foo = function(){ echo "foo"; };
$foo->foo(); // echo's bar instead of Foo.
Câu hỏi của tôi là Tại sao?, và làm thế nào tôi có thể đảm bảo rằng cả hai điều này:
$foo->bar = function(){ echo "test"; };
$foo->bar();
và điều này
$foo = new Bar;
$foo->bar();
được gọi là đúng cách? Điểm thêm nếu bạn có thể trỏ đến tài liệu nêu rõ lý do xảy ra sự cố này.
Điều này cùng với các nhận xét khác cho phép tôi thiết lập một lớp 'stdObj' mà tôi có thể sử dụng để tạo một đối tượng không cần một lớp (loại) một cách đáng tin cậy. Cảm ơn! –