вот тестовый файл: PHP: <?php class Test { var $data; function Test() { $this->data = array(); $cols = array(); $cols[] = '123'; $cols[] = '456'; $cols[] = '789'; $cols[] = '000'; $d = $this->getData('test'); $d->setData($cols); $d->getData(); $d = $this->getData('test'); $d->getData(); } function getData($name) { if (!is_object($this->data[$name])) { $this->data[$name] = new MyData($name); echo 'null<br>'; } return $this->data[$name]; } } class MyData { var $name; var $data; function MyData($name) { $this->name = $name; echo 'create MyData<br>'; } function setData($data) { $this->data = $data; echo 'name='.$this->name.', count='.count($this->data).'<br>'; } function getData() { echo 'name='.$this->name.', count='.count($this->data).'<br>'; return $this->data; } } $test = new Test(); ?> в PHP5 всё работает нормально и мы получаем: create MyData null name=test, count=4 name=test, count=4 name=test, count=4 однако, в PHP4 мы получаем: create MyData null name=test, count=4 name=test, count=4 name=test, count=0 в чем проблема? очень нужно заставить код работать по 4-ю версию. заранее спасибо.
$d = $this->getData('test'); замените в двух местах на $d =& $this->getData('test'); будет работать под PHP4. Но вообще пример реально невнятный, что он делает (и что должен делать) - непонятно...