Laravelコントラクトの使用法は何ですか

WBOY
リリース: 2022-02-24 15:06:15
オリジナル
2397 人が閲覧しました

laravel では、コントラクトは、サードパーティのインターフェイス開発者の開発を容易にするために、フレームワークによって提供されるコア サービスを定義する一連のインターフェイスを指します。すべてのコントラクトの実装は、フレームワークのすべてのコア タスクを構成し、次のことができます。コントラクトを通じて特定の機能の役割を理解します。

Laravelコントラクトの使用法は何ですか

#この記事の動作環境: Windows 10 システム、Laravel バージョン 6、Dell G3 コンピューター。

laravel コントラクトの使用法とは何ですか

コントラクトとは

Laravel のコントラクトとは、次のようなコア サービスを定義するフレームワークによって提供される一連のインターフェイスを指します。キャッシュ、キュー、ログ インターフェース、コントラクトがインターフェースです。

なぜインターフェースを定義する必要があるのか​​

インターフェースを定義する目的は分離です

依存するときキャッシュインスタンス上で、laravel は次のように実装します:

例: memcached キャッシュドライバーを使用することを選択します

use Illuminate\Contracts\Cache\Repository as Cache;
class Repository{
    /**
     * 创建一个新的Repository实例
     *
     * @param  Cache  $cache
     * @return void
     */
    public function __construct(Cache $cache)
    {
        $this->cache = $cache;
    }
}
ログイン後にコピー

インターフェースを定義しないでください

定義しない場合このインターフェイスは次のように記述する必要があります

use Memcached;
class Repository{
    /**
     * 创建一个新的Repository实例
     *
     * @param  Cache  $cache
     * @return void
     */
    public function __construct(Memcached $cache)
    {
        $this->cache = $cache;
    }
}
ログイン後にコピー

キャッシュ ドライバーを Redis に切り替える必要がある場合は、コントローラーに移動して、依存関係注入の型規約を Redis に変更する必要があります。これは、Redis の実装が理由です。必ずしも Memcached とまったく同じであるとは限りません。つまり、Memcached キャッシュが laravel と密結合しているということです。

疎結合とは

疎結合とは何ですか? システムがアップグレードされ、実装が必要になる場合(Memcached から Redis へのアップグレードなど)、コード ベースは変更できず、構成のみを変更する必要があります。アップグレードが完了すると、疎結合とみなされます。

1 つの契約には 2 つまたは複数の実装があります

個人的には、契約が完了したので、対応する実装は 2 つ以上になるはずです。さもなければ、近い将来実装されるでしょう。2 つあります。またはそれ以上の実装があり、契約は非常に多くの実装を規定するためにここにあります。実装が 1 つしかない場合は、契約が無駄になるように感じます。

概要

定義契約は、サードパーティ インターフェイス開発者の開発を促進するための一連の機能の実装に関する合意です。

コントラクトはフレームワークの A ディレクトリ インデックスに似ています。すべてのコントラクトの実装はフレームワークのすべてのコア サービスを構成し、コントラクトを通じてこの一連の関数が何を行うかをすぐに理解できます。

キャッシュ クラスの場合、キャッシュ コントラクトは、さまざまなキャッシュ実装 (Memcached、Redis、ファイル キャッシュ) が関数を実装する必要があることを規定することです。

[関連する推奨事項: laravel ビデオ チュートリアル ]

以上がLaravelコントラクトの使用法は何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!