How*_*ard 1 php unit-testing design-patterns laravel laravel-5
对于Laravel广泛使用的外观存在一些批评[见下文],这似乎是一种反模式,例如
单身"外墙"唯一的优势是它们相对"易于使用",但从这种快捷方式引入的技术债务很难估计.
示例代码:
$value = Cache::get('key');
Run Code Online (Sandbox Code Playgroud)
因此,使用上面的示例代码,任何人都可以告诉我如果我们不使用外观,如何用PHP编写更好的代码?
免责声明:我不一定同意外墙是坏的或反模式
"更好"的方法是使用依赖注入.例如,如果这是您的控制器:
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)
请注意,我们不是在这里打字外观类,而是底层框架类.您可以在文档中找到这些类的列表.