使用Laravel Facade进行依赖注入

时间:2014-09-18 14:07:41

标签: php laravel dependency-injection

我有一个错误类,我为它做了一个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中做出替代,就像上面的例子一样。我需要一个更有活力的解决方案。

1 个答案:

答案 0 :(得分:2)

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;
}