123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187 |
- <?php
- function bar($param1)
- {
- return $param1;
- }
- $closure = function($param1) {
- return $param1;
- };
- function test($fn)
- {
- static $count = 0;
- $input = "foo".$count;
- $count++;
- $output = $fn($input);
- return $input === $output;
- }
- class Foo
- {
- public static function publicStaticFunction($param1)
- {
- return $param1;
- }
- private static function privateStaticFunction($param1)
- {
- return $param1;
- }
- protected static function protectedStaticFunction($param1)
- {
- return $param1;
- }
- private function privateInstanceFunc($param1)
- {
- return $param1;
- }
- protected function protectedInstanceFunc($param1)
- {
- return $param1;
- }
- public function publicInstanceFunc($param1)
- {
- return $param1;
- }
- public function closePrivateValid()
- {
- return Closure::fromCallable([$this, 'privateInstanceFunc']);
- }
- public function closePrivateStatic()
- {
- return Closure::fromCallable([__CLASS__, 'privateStaticFunction']);
- }
- public function bar($param1)
- {
- echo "this is bar\n";
- }
- public function getCallable()
- {
- return Closure::fromCallable([$this, 'publicInstanceFunc']);
- }
- public function getSelfPublicInstance()
- {
- return Closure::fromCallable([$this, 'publicInstanceFunc']);
- }
- public function getSelfColonPublicInstanceMethod()
- {
- return Closure::fromCallable('self::publicInstanceFunc');
- }
- }
- class SubFoo extends Foo {
- public function closePrivateStaticInvalid()
- {
- return Closure::fromCallable([__CLASS__, 'privateStaticFunction']);
- }
- public function closePrivateInvalid()
- {
- return Closure::fromCallable([$this, 'privateInstanceFunc']);
- }
- public function closeProtectedStaticMethod()
- {
- return Closure::fromCallable([__CLASS__, 'protectedStaticFunction']);
- }
- public function closeProtectedValid()
- {
- return Closure::fromCallable([$this, 'protectedInstanceFunc']);
- }
- public function getParentPublicInstanceMethod()
- {
- return Closure::fromCallable('parent::publicInstanceFunc');
- }
- public function getSelfColonParentPublicInstanceMethod()
- {
- return Closure::fromCallable('self::publicInstanceFunc');
- }
- public function getSelfColonParentProtectedInstanceMethod()
- {
- return Closure::fromCallable('self::protectedInstanceFunc');
- }
- public function getSelfColonParentPrivateInstanceMethod()
- {
- return Closure::fromCallable('self::privateInstanceFunc');
- }
- }
- class MagicCall
- {
- public function __call($name, $arguments)
- {
- $info = ['__call'];
- $info[] = $name;
- $info = array_merge($info, $arguments);
- return implode(',', $info);
- }
- public static function __callStatic($name, $arguments)
- {
- $info = ['__callStatic'];
- $info[] = $name;
- $info = array_merge($info, $arguments);
- return implode(',', $info);
- }
- }
- class PublicInvocable
- {
- public function __invoke($param1)
- {
- return $param1;
- }
- }
- function functionAccessProtected()
- {
- $foo = new Foo;
- return Closure::fromCallable([$foo, 'protectedStaticFunction']);
- }
- function functionAccessPrivate()
- {
- $foo = new Foo;
- return Closure::fromCallable([$foo, 'privateStaticFunction']);
- }
- function functionAccessMethodDoesntExist()
- {
- $foo = new Foo;
- return Closure::fromCallable([$foo, 'thisDoesNotExist']);
- }
- ?>
|