Установка необъявленного свойства не работает в PHP 5.3.x? - PullRequest
1 голос
/ 17 ноября 2011

Может кто-нибудь сказать мне, почему:

class foo {

    function __construct() {
        foreach($_GET as $get_var => $val) {
            $this->$get_var = $val;
        }

        foreach($_POST as $post_var => $val) {
            $this->$post_var = $val;
        }

        $this->test = "test";
    }
}

Генерирует и пустой объект, т.е.

object(foo)#1 (0) {   
}

пока:

class foo {

public $post;
public $get;


function __construct() {
        foreach($_GET as $get_var => $val) {
            $this->get->$get_var = $val;
        }

        foreach($_POST as $post_var => $val) {
            $this->post->$post_var = $val;
        }
    }
}

Работает просто отлично, т.е.:

object(foo)#1 (2) {
  ["post"]=>
  NULL
  ["get"]=>
  object(stdClass)#3 (2) {
    ["fred"]=>
    string(4) "fish"
    ["joe"]=>
    string(6) "bloggs"
  }
}

Это кажется проблемой только в PHP 5.3.x, но работает на наших машинах в 5.2.x.Это проблема конфигурации PHP или я что-то упустил?Я просмотрел документы по классам и объектам и ничего не вижу.

Для этого класса это не большая проблема, но когда речь идет о создании классов баз данных, это означает ОЧЕНЬ больше работы.

1 Ответ

0 голосов
/ 17 ноября 2011

да, это проблема 5.3. на самом деле вы не должны зависеть от использования необъявленных переменных, но вот некоторые решения.

http://www.tonylake.info/?p=159

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...