2

Laravel でキャッシュを使用する方法について混乱しています。Cache ファサードを使用して、次のようなことを行うことができます。</p>

use Cache;

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

または、このようなものを使用できます...</p>

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

どちらも、2 番目のメソッドに含めた同じメソッドvendor/laravel/framework/src/Illuminate/Cache/Repository.php を実装する Repository クラスから覚えてい ます。vendor/laravel/framework/src/Illuminate/Contracts/Cache/Repository.php

Laravel docsに従って:

コントラクトは、Laravel のキャッシュ サービスへのIlluminate\Contracts\Cache\Factory and Illuminate\Contracts\Cache\Repositoryアクセスを提供します。Factory コントラクトは、アプリケーション用に定義されたすべてのキャッシュ ドライバーへのアクセスを提供します。通常、リポジトリ コントラクトは、キャッシュ構成ファイルで指定された、アプリケーションの既定のキャッシュ ドライバーの実装です。

ただし、このドキュメント全体で使用する Cache ファサードを使用することもできます。Cache ファサードは、Laravel キャッシュ コントラクトの基盤となる実装への便利で簡潔なアクセスを提供します。

したがって、両方のアプローチが同じであると結論付けることができます。Cache Facade はよりクリーンな実装を提供してくれます。それだけです。

4

1 に答える 1

1

アプリケーションでも同じ結果が得られます。それは同じですが、同じではありません。

2 番目のアプローチでは、依存性注入を使用しています。これにより、クラスのテストを簡単に作成できます。このようにして、より保守しやすいアプリケーションを手に入れることができます。

依存性注入を詳しく見てみましょう。ここに素晴らしい記事があります: Dependency Injection with Laravel's IoC

于 2016-05-03T06:37:27.777 に答える