function test() { self::test1(); parent::test2(); static::test3(); A::test4(); B::test5(); C::test6(); }
<?php use php\lang\Invoker; $invoker = Invoker::of('unknown'); var_dump($invoker); $invoker = Invoker::of('var_dump'); var_dump($invoker); class A { private static function test1() { echo "success\n"; } public static function test2(Invoker $invoker) { $invoker(); } } $invoker = Invoker::of('A::test1'); var_dump($invoker); var_dump("can_access=" . ($invoker->canAccess() ? 'true' : 'false')); A::test2($invoker); ?> --EXPECTF-- NULL object(php\lang\Invoker)#%d (0) { } object(php\lang\Invoker)#%d (0) { } string(16) "can_access=false" success
<?php class A { public static $test1 = true; public static $test2 = array(); public static $test3 = "str"; } class B extends A { } A::$test1 = "x"; A::$test2 = "y"; A::$test3 = "z"; var_dump(A::$test1); var_dump(A::$test2); var_dump(A::$test3); var_dump(B::$test1); var_dump(B::$test2); var_dump(B::$test3);