[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Notice: Undefined variable: _POST
Invis1ble
Товарищи! Кто бы мог сказать что-то о таком удивительном нотайсе? =)
Вобщем возникает он в таком коде:
class test
{
public $method;
public $globalSpace;

public function __construct($method = 'post')
{
$this->method = $method;
$this->globalSpace = strtolower($method) == 'post' ? '_POST' : '_GET';
}

public function someMethod()
{
var_dump(${$this->globalSpace}); // Notice ((
var_dump($_POST) // все нормально oO

// other code

}
}

Кто-нибудь может мне объяснить, что все это значит?

PS. Самое интересное - за пределами класса такой же var_dump(${$object->globalSpace}) не вызывает нотайса )



Спустя 32 минуты, 6 секунд (27.02.2011 - 09:50) T1grOK написал(а):
Озадачил blink.gif

Спустя 59 минут, 43 секунды (27.02.2011 - 10:49) glock18 написал(а):
Invis1ble
да, проверил у себя, действительно есть такая магия. предлагаю не париться над решением этой проблемы, а организовать доступ к посту немного по-другому:

вместо имени переменной, к которой надо обращаться, оставляй объекту ссылку на саму переменную.

Спустя 11 минут, 20 секунд (27.02.2011 - 11:01) Invis1ble написал(а):
glock18
OK, чуть позже попоробую. Но все же интересно, в чем проблема в данном случае.

Спустя 1 час, 7 минут, 34 секунды (27.02.2011 - 12:08) Invis1ble написал(а):
glock18
да, со ссылкой все получилось.
Однако, что же это могло значить? Баг в php ?

Спустя 27 минут, 59 секунд (27.02.2011 - 12:36) vasa_c написал(а):
Переменные переменных работают неочевидно. Что нужно сделать? Вестимо пойти в документацию в раздел "переменные переменных":

Цитата
Please note that variable variables cannot be used with PHP's Superglobal arrays within functions or class methods. The variable $this is also a special variable that cannot be referenced dynamically.

Спустя 2 минуты, 7 секунд (27.02.2011 - 12:38) Invis1ble написал(а):
vasa_c
Все ясно, теперь все стало на свои места. Спасибо за пояснение.

Спустя 21 час, 19 минут, 41 секунда (28.02.2011 - 09:58) linker написал(а):
Много кода, если уж очень хочется, то можно так
$this->globalSpace = strtolower($method) == 'post' ? &$_POST : &$_GET;

Спустя 20 минут, 14 секунд (28.02.2011 - 10:18) Invis1ble написал(а):
linker
я уже именно так и сделал =)


_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.