Вобщем возникает он в таком коде:
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](http://phpforum.ru/html/emoticons/blink.gif)
Спустя 59 минут, 43 секунды (27.02.2011 - 10:49) glock18 написал(а):
Invis1ble
да, проверил у себя, действительно есть такая магия. предлагаю не париться над решением этой проблемы, а организовать доступ к посту немного по-другому:
вместо имени переменной, к которой надо обращаться, оставляй объекту ссылку на саму переменную.
да, проверил у себя, действительно есть такая магия. предлагаю не париться над решением этой проблемы, а организовать доступ к посту немного по-другому:
вместо имени переменной, к которой надо обращаться, оставляй объекту ссылку на саму переменную.
Спустя 11 минут, 20 секунд (27.02.2011 - 11:01) Invis1ble написал(а):
glock18
OK, чуть позже попоробую. Но все же интересно, в чем проблема в данном случае.
OK, чуть позже попоробую. Но все же интересно, в чем проблема в данном случае.
Спустя 1 час, 7 минут, 34 секунды (27.02.2011 - 12:08) Invis1ble написал(а):
glock18
да, со ссылкой все получилось.
Однако, что же это могло значить? Баг в php ?
да, со ссылкой все получилось.
Однако, что же это могло значить? Баг в 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 | второй профиль