Инъекция зависимости с помощью Laravel Facade

У меня есть класс ошибок, для которого я сделал Facade и ServiceProvider.

Я использую это так:

Err::getLastError();

У меня также есть другой класс для проверки файлов:

FileValidate::IsImage($this->getUpload());

Я хочу ввести фасад Err в FileValidate так что я использую это так:

FileValidate::Error()->getLastError();

Как мне это сделать?

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

function Error()
{
return $this;
}

Хотя вышесказанное просто возвращает FileValidate объект, таким образом, я добавляю другой метод:

function getLastError()
{
return   Err::getLastError();
}

Но тогда для каждого метода ErrЯ должен сделать альтернативу в FileValidate и все Err, как в приведенном выше примере. Мне нужно более динамичное решение.

0

Решение

В вашем FileValidate::Error() метод возвращает класс ошибки, а не экземпляр FileValidate:

function Error()
{
return app()->make('Err');
}

Это вернет ваш объект ошибки, который должен иметь все необходимые методы без необходимости дублировать их в другом классе без причины.

Другой альтернативой может быть добавление объекта ошибки в FileValidateконструктор:

public function __construct(Err $error) {
$this->$error = $error;
}

После обновления поставщика услуг проверки вашего файла, вы можете просто вернуться тот объект из вашего Error метод:

public function Error()
{
return $this->error;
}
2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector