Скажем, у меня есть класс с приватной таблицей отправки.
$this->dispatch = array(
1 => $this->someFunction,
2 => $this->anotherFunction
);
Если я тогда позвоню
$this->dispatch[1]();
Я получаю ошибку, что метод не является строкой. Когда я делаю это как строка:
$this->dispatch = array(
1 => '$this->someFunction'
);
Это производит
Неустранимая ошибка: вызов неопределенной функции $ this-> someFunction ()
Я также пытался использовать:
call_user_func(array(SomeClass,$this->dispatch[1]));
В результате Сообщение: call_user_func (SomeClass :: $ this-> someFunction) [function.call-user-func]: первый аргумент должен быть допустимым обратным вызовом .
Редактировать: Я понял, что это на самом деле не имеет смысла, так как он вызывает SomeClass :: $ this, когда $ this SomeClass. Я пробовал это несколькими способами, с массивом, содержащим
array($this, $disptach[1])
Это все еще не достигает того, что мне нужно.
Конец редактирования
Это работает, если у меня нет класса и просто есть файл отправки с некоторыми функциями. Например, это работает:
$dispatch = array(
1 => someFunction,
2 => anotherFunction
);
Мне интересно, есть ли способ сохранить их в качестве закрытых методов в классе, но при этом использовать их с таблицей диспетчеризации.