Почему не удаётся получить доступ к константе?

Есть объект 1, в его публичном свойстве $tmp лежит объект 2. При попытке вызвать ->tmp::CONSTANT вылазит вот такая ересь:

Parse error: syntax error, unexpected '::' (T_PAAMAYIM_NEKUDOTAYIM), expecting ',' or ';' in E:\OpenServer\domains\mvc.local\test.php on line 18


Вот код:

<?php
class Foo
{
    const CONSTANT = 'SomeValue';
}

class Bar
{
    public $tmp;
    
    function __construct()
    {
        $this->tmp = new Foo;
    }
}

$object = new Bar;
echo $object->tmp::CONSTANT;


Что за дела?

PHP 5.6.3
  • Вопрос задан
  • 421 просмотр
Решения вопроса 1
Audiophile
@Audiophile Автор вопроса
Решено в PHP 7. Ура, товарищи.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Immortal_pony
@Immortal_pony Куратор тега PHP
$a = $object->tmp;
echo $a::CONSTANT;
Ответ написан
А в чем проблема просто дернуть константу из класса, а не из его экземпляра(объекта)
echo Foo::CONSTANT;

или узнать имя класса и потом получить значение константы

var_dump(constant(get_class($a) . '::CONSTANT'));
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы