Tôi đã sử dụng cách mở rộng chức năng của jQuery/Javascript thông qua các bao đóng. Có thể làm điều gì đó tương tự trong PHP 5.3?Đóng cửa là thành viên của lớp học?
class Foo
{
public $bar;
}
$foo = new Foo;
$foo->bar = function($baz) { echo strtoupper($baz); };
$foo->bar('lorem ipsum dolor sit amet');
// LOREM IPSUM DOLOR SIT AMET
[sửa] trộn lẫn 'it' và 'is' trong câu hỏi của tôi. heh.
CẬP NHẬT
Tôi đã tải xuống 5,33 và nó hoạt động!
class Foo
{
protected $bar;
public $baz;
public function __construct($closure)
{
$this->bar = $closure;
}
public function __call($method, $args)
{
$closure = $this->$method;
call_user_func_array($closure, $args);
}
}
$foo = new Foo(function($name) { echo "Hello, $name!\n"; });
$foo->bar('Mon');
// Hello, Mon!
$foo->baz = function($s) { echo strtoupper($s); };
$foo->baz('the quick brown fox jumps over the lazy dog');
// THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG
này là khá nhiều bản sao của http://stackoverflow.com/questions/146737/closures-in-php-what-exact-are-them-and-when-would-you-need-to-use-them – troelskn
Xem thêm: [Gọi đóng cửa được gán trực tiếp cho thuộc tính đối tượng] (http: // stackoverflow .com/q/4535330/367456) – hakre