2016-04-03 4 views
0

Я пытаюсь вызвать функцию в статической переменной класса, но у меня есть некоторые проблемыВызов функции в статической переменной члена

Это минимальный пример

#!/usr/bin/php 
<?php 

class Foo { 
    public static $func; 

    public static function call() { 
    echo "calling func\n"; 
    if (is_callable(self::$func)) 
     self::$func(); 
    else echo "no call\n"; 
    } 
} 


Foo::call(); 

Foo::$func = function() { echo "hello\n"; }; 

Foo::call(); 

?> 

Это дает мне следующий вывод

calling func 
no call 
calling func 
PHP Notice: Undefined variable: func in /home/edwin/hola.php on line 10 
PHP Fatal error: Function name must be a string in /home/edwin/hola.php on line 10 

ответ

1

сохранить ссылку на self::$func в переменной:

public static function call() { 
    echo "calling func\n"; 

    $callable = self::$func; // store in a variable 
    if (is_callable($callable)) 
     $callable(); 
    else 
     echo "no call\n"; 
} 
+0

Это работает! Благодаря! Есть ли у вас какая-то информация об этом поведении? –

Смежные вопросы