Косвенный вызов обьекта

PhpGuest

Guest
Косвенный вызов обьекта

Есть что то вроде этого:
PHP:
<?

  class handlerA{
  var $object;
      function handlerA() {}

      function SetObject(&$obj){   // <-?
          $this->object=&$obj;       // <-?
      }

      function CallTestCtrl(){
         $this->object->TestCtrl();
      }
  }

  class baseA {
  var $handler;
     function baseA(){
         $this->handler = new  handlerA();
         $this->handler->SetObject($this);
     }
  }

  class extA extends baseA{
  var $test;
     function extA(){
        baseA::baseA();
        $this->test=55;
     }

     function TestCtrl(){
        $this->test=66;
     }
  }


  $foo =  new extA();
  $foo->handler->CallTestCtrl();

  echo $foo->test;
  /* должно выводиться 66

      Как исправить чтоб работало?

  */
?>
 

su1d

Старожил PHPClubа
PHP:
$foo =&  new extA();
ну, и по-хорошему (в данном случае необязательно):
PHP:
$this->handler =& new  handlerA();
 

PhpGuest

Guest
Originally posted by su1d
PHP:
$foo =&  new extA();
ну, и по-хорошему (в данном случае необязательно):
PHP:
$this->handler =& new  handlerA();
это что ли потому что $this в конструкторе неопредлен получавется?

кстати
во втором случае - все равно не работает
 

su1d

Старожил PHPClubа
у меня на РНР5 работал твой первоначальный вариант (оно и понятно: там присваивание объектов идёт по ссылке).

первое моё изменение заставило код работать на РНР4.
второе -- ничего не изменило.

может у тебя версия РНР старая?
 

PhpGuest

Guest
(если вынести new handlerA() из конструктора в другой метод - работает)

4.3.4 (но по моему модификация непоследняя)

порекомендуешь php 5 поставить?
 

su1d

Старожил PHPClubа
неа.. если делаешь что-то "на сейчас", то лучше на РНР4 и тестить.

РНР5 -- пока ещё разве что ради "поиграться"
или если "проект на вырост", как у меня сейчас.
 
Сверху