Несколько paamayim некудотаим в PHP, почему бы и нет? - PullRequest
7 голосов
/ 08 июля 2011

В PHP 5.3.6 я заметил, что следующее не будет работать:

class Foo{
    public static $class = 'Bar';
}

class Bar{
    public static function sayHello(){
        echo 'Hello World';
    }
}

Foo::$class::sayHello();

Выпуск unexpected T_PAAMAYIM_NEKUDOTAYIM.Однако использование временной переменной приводит к ожидаемому результату:

$class = Foo::$class;
$class::sayHello(); // Hello World

Кто-нибудь знает, является ли это намерением, или непреднамеренным результатом того, как оператор разрешения области видимости маркирован или что-то еще?Какие-нибудь более чистые обходные пути, чем последний, пример временной переменной?

1 Ответ

2 голосов
/ 08 июля 2011

К сожалению, нет способа сделать это в одной строке. Я думал, что вы могли бы сделать это с помощью call_user_func (), но не идти:

call_user_func(Foo::$class.'::sayHello()');
// Warning: call_user_func() expects parameter 1 to be a valid callback, class 'Bar' does not have a method 'sayHello()'

Кроме того, почему вы хотите сделать что-то подобное в первую очередь? Я уверен, что должен быть лучший способ сделать то, что вы пытаетесь сделать - обычно, если вы используете переменные или имена классов.

...