2015-04-13 3 views
0

Я обнаружил очень странное поведение 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

+0

'T_PAAMAYIM_NEKUDOTAYIM' - это имя оператора' :: '. – Daan

ответ

0

Вы можете получить доступ к классу постоянная через имя класса, а не объект.

например. echo Foo::CONSTANT;

+0

Хорошо, но в этом свойстве может быть еще один объект класса. – Audiophile

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