Задать вопрос
@AirBook

Как еще можно подставить вызов метода?

$res = $this->$method['name']($parser_name);
Вопрос 1 Столкнулся вот с таким кодом, нормально ли это с точки зрения ООП?
serginhold полностью ответил на этот вопрос. Я знал что код для подстановки метода, но думал зачем так делать, оказывается так делать не нужно
$method = 'getName';
$obj->$method(); // $obj->getName();

$method = 'getTitle';
$obj->$method(); // $obj->getTitle();

Вопрос 2 А есть ли более правильный способ сделать то же самое?
Думаю лучше логику программы переписать, чтобы такие вещи не нужно было юзать вообще, но интересно, если все же нужно как юзать такую "автоподстановку метода" правильно?
Ответ hack504 мне кажется наиболее правильным с точки зрения ООП, пойду почитаю про рефлексию
$this->{$method['name']}($parser_name);
//можно и через рефлексию: 
$reflectionMethod = new ReflectionMethod($this, $method['name']);
$reflectionMethod->invoke($this, $parser_name);
  • Вопрос задан
  • 132 просмотра
Подписаться 2 Простой 2 комментария
Решения вопроса 2
serginhold
@serginhold
ни в чем, обычно так выглядит говн-код, т.к. ситуации когда это нужно крайне редкие

смысл в передаче названия метода или свойства через переменную, и всё. Типа в одном случае такой метод, в другом другой

$method = 'getName';
$obj->$method(); // $obj->getName();

$method = 'getTitle';
$obj->$method(); // $obj->getTitle();


p.s. вопрос на ходу редактируется.. если что автор спрашивал "в чем смысл так делать"
Ответ написан
Комментировать
hack504
@hack504
$this->{$method['name']}($parser_name);
//можно и через рефлексию: 
$reflectionMethod = new ReflectionMethod($this, $method['name']);
$reflectionMethod->invoke($this, $parser_name);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы