PHP - self, static or $this in callback function

Pavel S. picture Pavel S. · Feb 25, 2012 · Viewed 10k times · Source

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?

Answer

KingCrunch picture KingCrunch · Feb 25, 2012

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; }