Как в PHP проверить наличие интерфейса не создавая экземпляра? В метод приходит имя класса, необходимо проверить этот класс на реализацию интерфейса минимальными усилиями. Сейчас я делаю (new $class) instanceof $interface . Но мне кажется немного не рационально создавать экземпляр класса лишь для проверки интерфейса. Тем более не хочется создавать Reflection объект ибо это выглядит ещё хуже. Есть идеи как это сделать менее трудоёмко для системы?

21 Авг 2019 в 07:01
234 +1
0
Ответы
1

Можно воспользоваться функцией class_implements, которая позволяет получить список интерфейсов, которые реализует класс без создания экземпляра. Для проверки наличия конкретного интерфейса можно использовать функцию in_array. Вот пример кода:

function hasInterface($class, $interface) {
return in_array($interface, class_implements($class));
}
$class = 'ClassName';
$interface = 'InterfaceName';
if (hasInterface($class, $interface)) {
echo "Class $class implements interface $interface";
} else {
echo "Class $class does not implement interface $interface";
}

Этот подход не создает экземпляр класса и не использует Reflection, что делает его более эффективным с точки зрения производительности.

20 Апр 2024 в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир