Задать вопрос
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(); - все равно не работает.
  • Вопрос задан
  • 95 просмотров
Подписаться 1 Простой 2 комментария
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 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();
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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