Есть интерфейс
\common\modules\notification\interfaces\NoticeInterface
Его реализуют необходимые классы классы.
Есть компонент, который отсылает уведомления пользователям. В этот компонент по средствам конфигурации попадает класс, который должен реализовать интерфейс NoticeInterface, тоесть к примеру:
$noticeModel = 'common\modules\merchant\modules\transfers\communication\notifications\Notice';
В компоненте мне нужно проверить, действительно ли $noticeModel реализует нужный интерфейс.
Я сделал вот такой тест:
if ($noticeModel instanceof NoticeInterface) {
echo "success";
} else {
echo "fail";
}
echo '<br/>';
if ($noticeModel instanceof \common\modules\notification\interfaces\NoticeInterface) {
echo "success";
} else {
echo "fail";
}
echo '<br/>';
if (is_subclass_of($noticeModel, 'NoticeInterface')) {
echo "success";
} else {
echo "fail";
}
echo '<br/>';
if (is_subclass_of($noticeModel, '\common\modules\notification\interfaces\NoticeInterface')) {
echo "success";
} else {
echo "fail";
}
Результат:
fail
fail
fail
success
Хотя интерфейс в компоненте подключен. Подскажите пожалуйста почему так происходит ?