@Architecktor133

Что не так с этим PHP?

echo $this->getController(); // Выводит строку 'UserController'
var_dump(class_exists( $this->getController() )); // false
var_dump(class_exists(UserController)); // true


Что не так?
  • Вопрос задан
  • 243 просмотра
Решения вопроса 1
@Architecktor133 Автор вопроса
Всем спасибо за детальные ответы. Психанул, удалил несколько файлов, переписал всё заново, ошибка исчезла. Обидно, что так и не понял, в чём проблема
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
var_dump(class_exists(UserController)); // true
че прям так и выдает true? и кавычки не нужны?
пробейте сначала get_declared_classes()
посмотрите или класс назван верно, и файл совпадает по регистру. Вроде пока больше мыслей нет )
Ответ написан
Комментировать
L1Qu0R
@L1Qu0R
Веб разработчик
С неймспейсами может быть проблема?
Ответ написан
qonand
@qonand
Software Engineer
соглашусь с Артем Грибков у Вас скорее проблема с неймспейсами.
Когда Вы передаете в функцию class_exists класс, функция подтягивает информацию о пространстве имен из секции use например:
namespace test;

use mynamespece\UserController

class_exists(UserController);

это равносильно вызову
class_exists(\mynamespece\UserController);
Когда Вы передаете в функцию class_exists название класса в виде строки информация о пространстве имен из секции use не подтягиваеться. Т.е. Ваш класс будет искаться в текущем пространстве имен. Например:
namespace test;

use mynamespece\UserController

class_exists('UserController');

это равносильно вызову
class_exists(\test\UserController);
Как видно из примера классы ищуться в разных пространствах имен. Скорее всего что Ваша проблема связана с этим. Ее можно решить задав в строке название класса вместе с namespace, например:
class_exists('\mynamespece\UserController');
Ответ написан
Ваш ответ на вопрос

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

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