- var_dump: documentation ( source)
<?php
trait ClosureInATrait
{
public static function getClosureInTrait()
{
return function () {
return [__CLASS__, self::boo()];
};
}
public static function boo()
{
return __METHOD__;
}
}
class ClassConstantTest
{
use ClosureInATrait;
public static function getClosureInClass()
{
return function () {
return [__CLASS__, self::class];
};
}
public static function boo()
{
return __METHOD__;
}
}
$closureInClass = ClassConstantTest::getClosureInClass();
$closureInTrait = ClassConstantTest::getClosureInTrait();
echo 'Before bind: ' . PHP_EOL;
echo '__CLASS__ in class: ' . PHP_EOL;
var_dump($closureInClass());
echo '__CLASS__ in Trait: ' . PHP_EOL;
var_dump($closureInTrait());
$closureInClass = Closure::bind($closureInClass, null, 'stdClass');
$closureInTrait = Closure::bind($closureInTrait, null, 'stdClass');
echo PHP_EOL . 'After bind: ' . PHP_EOL;
echo '__CLASS__ in class: ' . PHP_EOL;
var_dump($closureInClass());
echo '__CLASS__ in Trait: ' . PHP_EOL;
var_dump($closureInTrait());