@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);
  • Вопрос задан
  • 95 просмотров
Решения вопроса 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);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
от 100 000 до 140 000 руб.
Paxport Москва
от 150 000 до 190 000 руб.
Алгоритмика Москва
от 110 000 до 160 000 руб.
15 сент. 2019, в 09:25
15000 руб./за проект
15 сент. 2019, в 09:17
25000 руб./за проект