Можно ли в php найти все отнаследованные классы одного определенного?
Есть ли какой-то стандартный способ получить всех наследников от определенного класса, зная название этого класса? php 8.2 Интересует, как можно выполнить переопределенный метод во всех наследуемых классах, хоть это и не по фен-шую.
Vitsliputsli, у меня был один такой момент, либо в сервисе объявлять репозитории всех классов (штук 20) и через if выбирать какой использовать.
Либо достать его из репозитория по интерфейсу. Правда в моём случае мне в отдельном классе всё равно пришлось объявить их, чтобы уже через такую конструкцию разрулить дальше
fomiash, не споря, как лучше, я бы сделал по-другому.
Родительский класс при создании регистрирует себя в некотором объекте-оповещалке, это наследуется всеми потомками. При наступлении события, мы кидаем его в оповещалку и она отправляет его всем зарегестрированным слушателям. В общем Observer. Т.е. у вас в классе будет явно видна регистрация для получения событий, вместо неявного вызова метода из произвольного участка кода.
tukreb, сложно сказать, не зная всех аспектов задачи. Мне все же кажется, лучше бы сделать конфиг, что для чего вызывать и работать на его основе. И не понадобится инстанцировать все классы.
Интерфейсы вещь техническая, не уверен, что правильно строить на них бизнес-логику.
Для правильного вопроса надо знать половину ответа
Для того, чтобы PHP видел класс, его надо сперва загрузить, подключив файл с классом через include/require. Имена всех загруженных классов можно получить через get_declared_classes, родителя класса через get_parent_class.
и это является ахиллесовою пятой, и чтобы избежать момента, когда не видит некоторые классы, всё равно придётся ручками дать понять php список всех нужных классов. :)