Константа доступа объекта члена класса не работает

Если я попробую следующий пример (PHP 5.4), я получу следующую ошибку:

Ошибка разбора: синтаксическая ошибка, неожиданный '::' (T_PAAMAYIM_NEKUDOTAYIM), ожидание ',' или ';'

class a {
    public $p;
    public function __construct() {
        $this->p = new b;
    }
    public function giveout() {
        echo $this->p::c;
    }
}
class b {
    const c = '234';
}
$obj = new a;
$obj->giveout();

Но почему? Разве нельзя использовать двойное двоеточие и стрелку в одном выражении? Я знаю, что я мог бы также использовать метод получения в классе B, а затем вызвать $this->p->get(), но я бы предпочел использовать приведенный выше синтаксис.

1 ответ

Перезапись

echo $this->p::c;

в

echo $this->p=b::c;

а также..

$a->giveout();

в

$obj->giveout();


Собираем все вместе...

<?php
class a {
public $p;
public function __construct() {
$this->p = new b;
}
public function giveout() {
echo $this->p=b::c;
}
}
class b {
const c = '234';
}
$obj = new a;
$obj->giveout();

ВЫХОД:

234
Другие вопросы по тегам