Константа доступа объекта члена класса не работает
Если я попробую следующий пример (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