我想通过回调函数从另一个上下文中调用protected static
方法,这是一个人为的例子:
class Foo {
protected static function toBeCalled() { }
public static function bar() {
functionThatAcceptsACallback(function () {
self::toBeCalled();
});
}
}
这在PHP 5.3中是否可行?我找不到办法让它发挥作用......
答案 0 :(得分:8)
It's not possible,但它将在5.4中,并且在闭包中支持$this
。
添加了封闭$这个支持。 (STA)的
修改强>
这适用于5.4alpha1。
class A
{
private function y()
{
print "y".PHP_EOL;
}
static private function z()
{
print "z".PHP_EOL;
}
function x()
{
return function() {
$this->y();
self::z();
};
}
}
$class = new A();
$closure = $class->x();
$closure();
/*
Output:
y
z
*/