PHP - self,static或$ this in callback function

时间:2012-02-25 17:35:38

标签: php static callback anonymous-function self

是否可以在PHP中的匿名回调中访问被称为selfstatic$this的类/对象?就像这样:

class Foo {
    const BAZ = 5;
    public static function bar() {
         echo self::BAZ; // it works OK
         array_filter(array(1,3,5), function($number) /* use(self) */ {
             return $number !== self::BAZ; // I cannot access self from here
         });
    }
}

有没有办法让它的行为与通常的变量一样,使用use(self)子句?

3 个答案:

答案 0 :(得分:15)

使用PHP5.4就可以了。现在,这是不可能的。但是,如果您只需要访问公共属性,方法

$that = $this;
function () use ($that) { echo $that->doSomething(); }

对于常量,没有理由使用限定名称

function () { echo Classname::FOO; }

答案 1 :(得分:4)

只需使用标准方式:

Foo::BAZ;

$baz = self::BAZ;
... function($number) use($baz) {
   $baz;
}

答案 2 :(得分:1)

这个怎么样:

class Foo {
    const BAZ = 5;
    $self = __class__;
    public static function bar() {
         echo self::BAZ; // it works OK
         array_filter(array(1,3,5), function($number) use($self) {
             return $number !== $self::BAZ; // access to self, just your const must be public
         });
    }
}