Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PHP - self, static or $this in callback function

Is it possible to access classes/objects reffered as self, static and $this in anonymous callbacks in PHP? Just like 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
         });
    }
}

Is there any way to make it behave as with usual variables, using use(self) clause?

like image 943
Pavel S. Avatar asked Feb 25 '12 17:02

Pavel S.


2 Answers

Just use the standard way:

Foo::BAZ;

or

$baz = self::BAZ;
... function($number) use($baz) {
   $baz;
}
like image 25
dynamic Avatar answered Oct 25 '22 17:10

dynamic


With PHP5.4 it will be. For now it's not possible. However, if you only need access to public properties, method

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

For constants there is no reason to not use the qualified name

function () { echo Classname::FOO; }
like image 88
KingCrunch Avatar answered Oct 25 '22 18:10

KingCrunch