Запуск PHP 5.4, так что я не ожидал этого, но я встречая следующее сообщение об ошибке:ошибка при использовании имени переменной класса и статический метод
Parse error: syntax error, unexpected '::' (T_PAAMAYIM_NEKUDOTAYIM)
Предположим, у вас есть переменная stdClass
установки следующим образом :
$this->variable = new stdClass();
$this->variable->other = array('class' => 'helloworld');
Теперь предположим, что вы хотите получить доступ к статическим методом класса helloworld
:
// Standard call
$x = helloworld::my_static_method();
// Call with variable class name
$x = $this->variable->other['class']::my_static_method();
Когда вы вызываете это, используя имя класса переменной, я получаю ошибку синтаксического анализа. Что странно, что если я делаю следующее, не представлено никакой ошибки:
$class = $this->variable->other['class'];
$x = $class::my_static_method();
Мне это кажется очень странным, может кто-нибудь придумать причину, почему имя класса не разделяющим правильно при использовании первого примера против второго?
Спасибо за объяснение , Приятно видеть, что они будут поддерживать более экзотическое использование синтаксиса для PHP 7. –
Я не буду говорить, что синтаксис PHP 7 является экзотическим, даже наоборот: он более последователен. И я рад, что с этим наконец занялись :) – hakre