glem1337
@glem1337

Как правильно создать объект класса через переменную?

Есть код:
$controller = new $controller_name;
		$action = $action_name;
		
		if(method_exists($controller, $action)) {
			$controller->$action();
		} else {
			Route::ErrorPage();
		}


Если класс и экшн существуют, то все ок, а если нет, то должна выполнятся Route::ErrorPage404()

Пока разрабатывал на локальной машине на php5 все работало. Решил выложить на бесплатный хостинг потестить, там оказался php7. Теперь если запрашиваемый класс контроллера существует, то все работает, но если же такого класса не существует, то выдает такую ошибку:
Fatal error: Class 'Controller_aasd' not found in /profiles/g/gl/gle/glem1337/shop-asd-test.zzz.com.ua/admin/application/core/route.php on line 67


67-я строка это строка с кодом $controller = new $controller_name;. Правильно ли я понял что в php7 нельзя создавать объекты несуществующих классов? И как эту проблему можно обойти?

Так пробовал $controller = new $controller_name(); - все равно не работает.
  • Вопрос задан
  • 94 просмотра
Решения вопроса 1
if( class_exists( $controller_name ) ) {
    $controller = new $controller_name;
    $action = $action_name;

    if(method_exists($controller, $action)) {
      $controller->$action();
    } else {
      Route::ErrorPage();
    }
} else {
      Route::ErrorPage();
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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