class c{
public $myV = &$_GET;
}
он дает мне ошибку :(Почему атрибут класса присваивается ссылкой не работает?
если я сделать простой простой:
$myV = &$_GET;
это работает
class c{
public $myV = &$_GET;
}
он дает мне ошибку :(Почему атрибут класса присваивается ссылкой не работает?
если я сделать простой простой:
$myV = &$_GET;
это работает
Вы не можете даже сделать это:
public $x = $y;
С руководство пользователя:
Это объявление может включать инициализацию, но эта инициализация должна быть постоянным значением, то есть она должна быть способна быть оценена во время компиляции и не должна зависеть от информации о времени выполнения для оценки.
Чтобы обойти это, просто установите его в функции __construct
.
public function __construct()
{
$this->myV = &$_GET;
}
DAMN почему это .. – dynamic
@ yes123, «почему» - это потому, что это значение свойства «жестко закодировано» в скрипте при анализе или «компиляции» времени. Если вы ссылаетесь на переменную, PHP не будет знать, что находится в ней до времени выполнения. Это решение для языкового дизайна; Я не могу ответить на вопрос, почему они так его проектировали, поскольку я не был частью этой дискуссии. – Matthew
Попробуйте это:
class c {
public $myV;
function c() {
$this->myV = &$_GET;
}
}
Вы не можете назначить переменные для полей перед классом экземпляра. Таким образом, ваша переменная будет установлена, когда объект будет создан из вашего класса.
... но эта инициализация должна быть постоянного значения - то есть, он должен быть способных оценить во время компиляции и не должен зависеть от времени выполнения информации для того, чтобы оценить ,
Вы можете определить эту зависимость в конструкторе, хотя.
Вы можете достичь такого же эффекта, как:
class c{
public $myV;
function __construct() { $this->myV = &$_GET; }
}
Зачем вам это нужно? Если это дает вам ошибку, возможно, это невозможно, и вы должны рассмотреть другой способ. Что ты хочешь делать? –
Мне нужно установить $ myV либо $ _GET $ _POST, либо $ _COOKIE –
И почему бы не передать его во время выполнения? –