Laravel使用外墙有任何缺点吗?

How*_*ard 1 php unit-testing design-patterns laravel laravel-5

对于Laravel广泛使用的外观存在一些批评[见下文],这似乎是一种反模式,例如

单身"外墙"唯一的优势是它们相对"易于使用",但从这种快捷方式引入的技术债务很难估计.

示例代码:

$value = Cache::get('key');
Run Code Online (Sandbox Code Playgroud)

因此,使用上面的示例代码,任何人都可以告诉我如果我们不使用外观,如何用PHP编写更好的代码?

luk*_*ter 6

免责声明:我不一定同意外墙是坏的或反模式

"更好"的方法是使用依赖注入.例如,如果这是您的控制器:

public function __construct(\Illuminate\Cache\Repository $cache){
    $this->cache = $cache;
}

public function doSomething(){
    $value = $this->cache->get('key');
}
Run Code Online (Sandbox Code Playgroud)

或者你也可以只使用一种方法:

public function doSomething(\Illuminate\Cache\Repository $cache){
    $value = $cache->get('key');
}
Run Code Online (Sandbox Code Playgroud)

请注意,我们不是在这里打字外观类,而是底层框架类.您可以在文档中找到这些类的列表.