ООП - непонятная ошибка в паттерне "делегатор"

korpus

злой бобёр
ООП - непонятная ошибка в паттерне "делегатор"

Сделал класс "делегатор", предназначенный для перехватывания обращений к классу a. Объект класса delegator является посредником при обращении к классу а. Но функцией call_user_func_array() не получается вызвать метод 'display' объекта класса a.
Пишится ошибка:
Warning: call_user_func_array() [function.call-user-func-array]: First argument is expected to be a valid callback, 'Array' was given in Z:\home\localhost\www\delegator.php on line 36

Код:
<?php

class a
{
   public function display($arg1)
   {
      echo 'Функции display() переданы аргументы: <br />';
      for ($i=0; $i<func_num_args(); $i++)
      {
         echo func_get_arg($i).'<br />';
      }
   }
}


class delegator
{
   public $a;
   public function __constract()
   {
      $this->a=new a;
   }

   /* этот метод также не работает, т.к. при вызове $delegator->somefunc($arg1, $arg2) тоже ошибка
   public function __call($method, $args)
   {
      return call_user_func_array(array($this->a, $method), $args);
   }
   */
}

$delegator=new delegator;
$args=array(20,23,50); //инициализирую массив с аргументами для функции
call_user_func_array(array($delegator->a, 'display'), $args); //вызываю метод 'display' объекта класса а, находящегося внутри объекта $delegator
?>
По моему функции call_user_func_array не нравится доступ к объекту как $delegator->a. Но не понятно почему.
 

korpus

злой бобёр
Re: Re: ООП - непонятная ошибка в паттерне "делегатор"

Автор оригинала: Вурдалак
— ошибка тут
Ну да точно :) ошибка.
В переменную a не передаётся объект класса а, когда я создаю объект класса Delegator...

Как говориться... век живи - век учись
 
Сверху