Есть ли способ получить доступ к классам, которые реализовали интерфейс в laravel? - PullRequest
0 голосов
/ 18 февраля 2019

В laravel 5.4 я делаю компонент уведомления.У меня есть три типа уведомлений (userNotify, orderNotify, otherNotify), и все они имеют те же свойства, что и notifyTitle, notifyContent, notifyImage ... и я установил все из них.

<?php
class NotifyFactory {

    public static function make($type){
        $className = 'App\\Classes\\'.$type.'Notify';

        if( class_exists($className) )
            return new $className();

        throw new \Exception('error');
    }
}
?>

<?php
class BaseNotify implements IBaseNotify {}
>?

<?php
class UserNotify extends BaseNotify {}
>?

<?php
class OrderNotify extends BaseNotify {}
>?

<?php
class OtherNotify extends BaseNotify {}
>?

, если я хочу использоватьлюбой тип уведомления, который я делаю:

NotifyFactory :: make ('OrderNotify');

он вызывает OrderNotify, и я хочу установить содержимое по умолчанию для свойства notifyContent впанель и я хочу получить доступ ко всем классам, которые реализовали IBaseNotify, но функция get_declared_classes () не предоставляет классы Notify.

Я знаю, что должен зарегистрировать этот класс в поставщике услуг, но я не использую внедрение зависимости, поэтому я нене знаю, как я могу зарегистрироваться.

Я хочу получить доступ ко всем классам, реализованным интерфейсом IBaseNotify, и установить поддержку по умолчанию.Как я могу это сделать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...