@dev400

Есть ли альтернатива конструкций if else?

Бывают ситуации, когда блоков много.

Example:
public static function init() {

		$route = self::getController();
		$method = $route['method'];

		$controller = self::getLogic()."\\controllers\\" . $route['controller'];
		$obj = '';

		if ( class_exists($controller) ) {

			$obj = new $controller;

		} else {

			self::notFound();

		}

		if ( method_exists($obj, $method) ) {

			if ( empty($route['params']) ) {

				$obj->$method();

			} else {

				if(!$obj->$method($route['params'])) {

					self::notFound();

				}

			}

		} else {

			self::notFound();

		}

	}


В принципе, читаемо(для меня).
Но может можно как то более лаконичнее?
  • Вопрос задан
  • 643 просмотра
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
есть, называется меняйте алгоритм, унифицируйте структуры, устраняйте различия, ну и ООП нормальное, а не курильщика (без статики, с использованием инкапсуляции, разделения ответственности и полиморфизма).
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
miraage
@miraage
Старый прогер
+ красиво выглядит
- сразу делает вычисления
- вряд ли получится делать вложенные вычисления

switch (true) {
  case class_exists(...):
    // code 1
  case method_exists(...):
    // code 2
}
Ответ написан
Ваш ответ на вопрос

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

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