@Sad_Bro
На темной стороне.

Как из метода класса #1 вызвать метод класса #2 если название метода приходит аргументом в метод #1?

Да да адовая формулировка но в общем задача такая надо проверить есть ли в переданном объекте нужные методы, если метод есть то вызываем его. Проблема в том что имя метода передается строкой.

Есть класс Route названием метода приходит строкой в метод execute, вторым параметром приходит объект у которого надо вызвать метод, как его вызвать возможно ? вот метод отдельно
function execute($c, $obj) {  //$c - названием метода строкой например 'run',  $obj -объект у которого должен быть вызван метод с именем run. 
			if ($this->validate($c)) {
				//тут должен быть вызван метод объекта $obj->c( );
			} else {
				echo "false";
			}
		}


Соотв если я вызываю в таком виде как выше, прилетает ошибка что метод c( ) не определен.
Вот полностью класс
class Route implements ActionRoute {
		protected $possible = []; //массив со всеми возможными методами (получается из переданного объекта)		
		protected $ControlObj;
		protected $method; //название метода

		function __construct($obj) {
			$this->possible = get_class_methods($obj); //получаем массив доступных методов
			$this->ControlObj = $obj;
		}

		 function validate($n) {
			if (in_array($n, $this->possible)) {
				echo "validate true $n";
				return true;
			}
			return false;
		}

		function execute($c, $obj) { //$c - названием метода строкой например 'run',  $obj -объект у которого должен быть вызван метод с именем run. 
			if ($this->validate($c)) {
				//тут должен быть вызван метод объекта $obj->c( );
			} else {
				echo "false";
			}
		}


	}
  • Вопрос задан
  • 180 просмотров
Решения вопроса 2
alexey-m-ukolov
@alexey-m-ukolov Куратор тега PHP
$obj->$c( );
ideone.com/Pys2vr
Ответ написан
Комментировать
@hetzerok
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы