2016-08-23 50 views

回答

1

Facade是调用Laravel的依赖注入容器中的实例的另一种方法。它们在整个应用程序中都可用。

依赖注入的实例只能在声明它们的地方才可用,使您的类更好地排序。

use Dependency; 

class Class 
{ 
    public function foo() 
    { 
     return Dependency::foo(); 
    } 
} 

我个人觉得这个方法混乱,你可以努力去理解其中的依赖实际上来自除非你在代码中直接搜索。

use Author\Library\Dependency; 

class Class 
{ 
    public function __construct(Dependency $dependency) 
    { 
     $this->dependency = $dependency; 
    } 

    public function foo() 
    { 
     return $this->dependency->foo(); 
    } 
} 

这种做法,而是让你需要的类中使用的实例的直接信息。

在良好实践方面,我认为这只是一个偏好问题,尽管Laravel 4.x基于Facades,但现在在5.x上的数量要少得多。

在性能方面,除了在Composer中自动加载附加X类实例之外,您不应该看到任何差异。