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
По моему функции call_user_func_array не нравится доступ к объекту как $delegator->a. Но не понятно почему.
Сделал класс "делегатор", предназначенный для перехватывания обращений к классу 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
?>
гений