Я хотел бы получить имена всех классов в определенном пространстве имен в PHP.В настоящее время я пытаюсь сделать что-то магическое с помощью отражения в определенном списке именованных классов, но я бы хотел сделать это, не зная заранее имен.
Я пытался позвонить get_declared_classes()
, но по какой-то причине доступные мне классы не отображаются.Я могу позвонить get_declared_classes()
, не видеть Event
в списке, а затем сразу же позвонить $x = new Event()
без проблем.Что-то вроде следующего, что, я думаю, должно вызвать проблемы ...
if (! in_array('Event', get_declared_classes())) { $x = new Event(); }
... работает нормально.Мне интересно, поможет ли пространство имен этих классов и их извлечение облегчить проблему.Возможно ли это?
РЕДАКТИРОВАТЬ: Для пояснения, позвольте мне добавить, что я в настоящее время не использую пространства имен, и я не пытаюсь специально достичь чего-то из приведенного выше кода.Я хочу получить имена всех классов, которые я объявил.Несмотря на то, что объявления классов для всех них выполняются до того, как я вызову get_declared_classes()
, они не все появляются в списке.Я надеялся, что пространство имен может помочь решить проблему.
РЕДАКТИРОВАТЬ 2: Некоторые люди указали, что классы могут быть загружены автоматически.Я проверил это, выполнив следующее.echo(class_exists('Event'))
вернул значение 1
.echo(class_exists('Event', FALSE))
вернул значение 0. Второй, необязательный параметр для class_exists - это автозагрузка или нет.Итак, по-видимому, класс загружается автоматически.Это отвечает на это.
Итак, следующий вопрос - как мне это предотвратить?Я использую фреймворк, который действительно не дает мне много контроля на низком уровне.Есть ли способ принудительной автозагрузки, ТОГДА позвоните get_declared_classes
или для get_declared_classes
сначала запустить автозагрузку?