Я обнаружил очень странное поведение PHP. Этот код:Ошибка анализа при попытке доступа к константе подобъекта,
class Foo
{
const CONSTANT = 'SomeValue';
}
class Bar
{
public $tmp;
function __construct()
{
$this->tmp = new Foo;
}
}
$object = new Bar;
echo $object->tmp::CONSTANT;
дает синтаксическую ошибку:
Parse error: syntax error, unexpected '::' (T_PAAMAYIM_NEKUDOTAYIM), expecting ',' or ';' in E:\OpenServer\domains\mvc.local\test.php on line 18
Что это, черт возьми? Почему это работает, только если я вводю промежуточную переменную:
$interm = $object->tmp;
echo $interm::CONSTANT
Мне действительно не нужны никакие дополнительные переменные.
PHP 5.6.3
'T_PAAMAYIM_NEKUDOTAYIM' - это имя оператора' :: '. – Daan