Задать вопрос
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 Простой 2 комментария
Решение пользователя Сергей Сосновский К ответам на вопрос (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();
}
Ответ написан