Laravel Facade实施

时间:2016-05-03 05:18:22

标签: laravel laravel-5 laravel-5.1 laravel-5.2 laravel-facade

我对如何在Laravel中使用缓存感到困惑。我可以使用缓存外观并执行类似......

的操作
use Cache;

public function someMethod()
{
    Cache::remember('users', 60 , function() {
        return DB::table('users')->get();
    });
}

或者我可以使用这样的东西......

use Illuminate\Contracts\Cache\Repository;

protected $cache;

public function __construct(Repository $repository)
{
    $this->cache = $repository;
}

public function someMethod()
{
    $this->cache->remember('users', 60 , function() {
        return DB::table('users')->get();
    });
}

两者都会从vendor/laravel/framework/src/Illuminate/Cache/Repository.php开始记住同样的方法 实现vendor/laravel/framework/src/Illuminate/Contracts/Cache/Repository.php的存储库类,我已将其包含在第二种方法中。

根据Laravel docs

  

Illuminate\Contracts\Cache\Factory and Illuminate\Contracts\Cache\Repository合同提供对Laravel缓存服务的访问。 Factory合约提供对为应用程序定义的所有缓存驱动程序的访问权限。存储库合同通常是缓存配置文件指定的应用程序的默认缓存驱动程序的实现。

     

但是,您也可以使用Cache facade,这是我们将在本文档中使用的内容。 Cache Facade提供了对Laravel缓存协定的底层实现的方便,简洁的访问。

我可以得出结论,两种方法都是一样的。 Cache Facade为我提供了一个更清晰的实现,就是这样。

1 个答案:

答案 0 :(得分:1)

您的应用程序会得到相同的结果。它是一样的但不一样。

在您的第二种方法中,您正在使用依赖注入。这样可以更轻松地为您的班级编写测试。这样您就可以获得更好的可维护应用程序。

深入了解依赖注入。这是一篇很好的文章:Dependency Injection with Laravel’s IoC