За последние 24 часа нас посетили 52486 программистов и 1716 роботов. Сейчас ищут 979 программистов ...

проблема в PHP4

Тема в разделе "Прочие вопросы по PHP", создана пользователем alkaruno, 4 апр 2007.

  1. alkaruno

    alkaruno Активный пользователь

    С нами с:
    4 апр 2007
    Сообщения:
    1
    Симпатии:
    0
    вот тестовый файл:

    PHP:
    1.  
    2. <?php
    3.  
    4. class Test
    5. {
    6.     var $data;
    7.    
    8.     function Test()
    9.     {
    10.         $this->data = array();
    11.        
    12.         $cols = array();
    13.        
    14.         $cols[] = '123';
    15.         $cols[] = '456';
    16.         $cols[] = '789';
    17.         $cols[] = '000';
    18.        
    19.         $d = $this->getData('test');
    20.  
    21.         $d->setData($cols);
    22.  
    23.         $d->getData();
    24.        
    25.         $d = $this->getData('test');
    26.        
    27.         $d->getData();
    28.     }
    29.    
    30.     function getData($name)
    31.     {
    32.         if (!is_object($this->data[$name]))
    33.         {
    34.             $this->data[$name] = new MyData($name);
    35.             echo 'null<br>';
    36.         }
    37.        
    38.         return $this->data[$name];
    39.     }
    40. }
    41.  
    42. class MyData
    43. {
    44.     var $name;
    45.     var $data;
    46.    
    47.     function MyData($name)
    48.     {
    49.         $this->name = $name;
    50.         echo 'create MyData<br>';
    51.     }
    52.    
    53.     function setData($data)
    54.     {
    55.         $this->data = $data;
    56.        
    57.         echo 'name='.$this->name.', count='.count($this->data).'<br>';
    58.     }
    59.    
    60.     function getData()
    61.     {
    62.         echo 'name='.$this->name.', count='.count($this->data).'<br>';
    63.        
    64.         return $this->data;
    65.     }
    66. }
    67.  
    68. $test = new Test();
    69.  
    70. ?>
    71.  
    в 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-ю версию. заранее спасибо.
     
  2. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    $d = $this->getData('test');
    замените в двух местах на
    $d =& $this->getData('test');
    будет работать под PHP4.
    Но вообще пример реально невнятный, что он делает (и что должен делать) - непонятно...