debian_Lenovo-B50-30
@debian_Lenovo-B50-30

Нужно ли проверять наличие метода, если в конструкторе не будет доступа к методам?

Варик 1
$controller = 'app\\controllers\\' . self::$route['controller'] . 'Controller';
if (!class_exists($controller)) {
    throw new Error("Контроллер {$controller} не найден", 404);
}
$action = self::$route['action'] . 'Action';
if (!method_exists($controller, $action)) {
    throw new Error("Метод {$controller}::{$action} не найден", 404);
}
$cObj = new $controller(self::$route);
$cObj->$action();
/* как примерный мальчик сделал все проверки, потом создал экземпляр и вызвал метод - классика :) */

Варик 2
$controller = 'app\\controllers\\' . self::$route['controller'] . 'Controller';
if (!class_exists($controller)) {
    throw new Error("Контроллер {$controller} не найден", 404);
}
$cObj = new $controller(self::$route);
/* в конструкторе, например, может быть УСЛОВИЕ на редирект или ещё что-то, что не даст запустить метод
* тогда нужно ли проверять наличие метода, до создания экземпляра?
*/
$action = self::$route['action'] . 'Action';
if (!method_exists($сObj, $action)) { // ищем в уже созданном экземпляре, если его конструктор допустил нас к его методам
    throw new Error("Метод {$controller}::{$action} не найден", 404);
}
$cObj->$action();

Логичен ли второй вариант, если учесть комментарии?
  • Вопрос задан
  • 55 просмотров
Решения вопроса 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
По мне - что в лоб, что по лбу.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Ведисофт Екатеринбург
от 25 000 ₽
YCLIENTS Москва
от 200 000 до 350 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽