Laravel5_PHPチュートリアルでのコントラクトの詳細説明
Laravel5のコントラクトについて詳しく解説
Laravel5で新しく追加されたコントラクトというものですが、そもそもコントラクトとは何なのでしょうか?用途は何ですか?使い方?それについて話し合いましょう。
まず公式文書における契約の定義を見てみましょう:
Laravel のコントラクトは、フレームワークによって提供されるコア サービスを定義するインターフェイスのセットです。
これは、Laravel のコントラクトがフレームワークによって提供されるコア サービス インターフェイスのコレクションであることを意味します。
言い換えれば、各コントラクトはフレームワークのコアサービスに対応するインターフェースです。
それではどういう意味ですか?公式ウェブサイトの説明も非常にシンプルで、インターフェイスを使用するのは疎結合と簡素化のためです。
最初に大きなアイデアについては話さないで、いくつかの実用的な情報について話して、コントラクトの使用方法を見てみましょう
まず、契約インターフェースのリストを参照します:
コードは次のとおりです:
IlluminateContractsAuthGuard
IlluminateContractsAuthPasswordBroker
イルミネート契約バス配車係
IlluminateContractsCacheRepository
イルミネート契約キャッシュファクトリー
IlluminateContractsConfigRepository
イルミネート契約コンテナコンテナ
IlluminateContractsCookieFactory
IlluminateContractsCookieQueueingFactory
IlluminateContractsEncryptionEncrypter
Illuminate契約ルーティングレジストラ
... 多すぎてこれ以上載せるのが面倒です。公式ウェブサイトのマニュアルに記載されています。 IlluminateContractsRoutingRegistrar コントラクトを例に挙げて説明してみましょう。
まず、app/Providers/AppServiceProvider.php を開き、登録メソッドに注目してください:
コードは次のとおりです:
パブリック関数 register()
{
$this->app->bind(
'IlluminateContractsAuthRegistrar'、
「AppServicesRegistrar」
);
}
$this->app は Application オブジェクトであり、コンテナ オブジェクトでもあります。$this->app->bind メソッドを通じて、IlluminateContractsAuthRegistrar インターフェイスを実装するクラス AppServicesRegistrar をバインドします。
IlluminateContractsAuthRegistrar はコントラクトであることに注意してください。 AppServicesRegistrar このクラス ファイルは app/Services/Registrar.php にあります。
次に、AppHttpControllersAuthAuthController コントローラー クラスを調べて、__construct コンストラクターがあることを確認します。
コードは次のとおりです:
{
$this->auth = $auth;
$this->registrar = $registrar;
$this->ミドルウェア('ゲスト', ['例外' => 'getLogout']);
}
これには 2 つのパラメーターがあり、対応するクラス名前空間はスクリプトの先頭で確認できます。
コードは次のとおりです:
IlluminateContractsAuthGuard を使用します;これらは両方ともコントラクトですが、ここでは Registrar を取り上げます。 $registrar のインターフェイスの種類はパラメーターの種類によってのみ指定されますが、実際に呼び出されるときは、これが依存関係の挿入機能です。 , Laravel は、IlluminateContractsAuthRegistrar インターフェイスを実装するクラスまたはオブジェクトをコンテナ内で自動的に検索し、存在する場合はそれらを取り出して実パラメータとしてコンストラクターに渡します。
使用プロセス全体は、実際には 2 つのステップに要約できます:
コントラクトインターフェースを実装するオブジェクトをコンテナに登録します。
コンストラクターのパラメーターの型はコントラクト インターフェイス クラスとして指定され、フレームワークは条件を満たすオブジェクトを自動的に検索します。
それでは契約のメリットについてお話していきます。
疎結合
公式 Web サイトでは、密結合とは何か、およびコントラクト インターフェイスが疎結合である理由を説明する例が示されています。
まず密結合コードを見てみましょう:
コードは次のとおりです:
クラス リポジトリ {/**
* キャッシュ
*/
保護された $キャッシュ;
/**
* 新しいリポジトリ インスタンスを作成します。
*
* @param SomePackageCacheMemcached $cache
* @return void
*/
パブリック関数 __construct(SomePackageCacheMemcached $cache)
{
$this->cache = $cache;
}
/**
* ID で注文を取得します。
*
* @param int $id
* @return 注文
*/
パブリック関数 find($id)
{
if ($this->cache->has($id))
{
//
}
}
}
コンストラクターに詳細なキャッシュ実装 SomePackageCacheMemcached が注入されていることがわかります。キャッシュサーバーとして Redis を変更したり、API メソッドを変更したりする場合は、プロジェクトが大きい場合は何箇所か変更する必要があります。変更する必要があります。
それでは、Contract インターフェースはこの問題をどのように解決するのでしょうか?コードを参照してください:
コードは次のとおりです:
IlluminateContractsCacheRepository をキャッシュとして使用します;
クラス リポジトリ {
/**
* 新しいリポジトリ インスタンスを作成します。
*
* @param キャッシュ $cache
* @return void
*/
パブリック関数 __construct(Cache $cache)
{
$this->cache = $cache;
}
}
キャッシュ実装にはインターフェイス、つまりコントラクト IlluminateContractsCacheRepository を使用することに注意してください。これは単なるインターフェイスであり、その背後にある memcache であるか redis であるかを気にする必要はないからです。
シンプルさ
すべてのサービスがインターフェース定義を使用すると、サービスに必要な機能が決定しやすくなり、保守や拡張が容易になり、契約インターフェースも読みやすい簡潔な文書とみなすことができます。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









1. プロセッサ コンピュータ構成を選択する場合、プロセッサは最も重要なコンポーネントの 1 つです。 CS などのゲームをプレイする場合、プロセッサーのパフォーマンスはゲームのスムーズさや応答速度に直接影響します。 Intel Core i5 または i7 シリーズ プロセッサを選択することをお勧めします。これらのプロセッサは、強力なマルチコア処理能力と高周波数を備え、CS の高い要件に簡単に対応できるためです。 2. グラフィックス カード グラフィックス カードは、ゲームのパフォーマンスを左右する重要な要素の 1 つです。 CSなどのシューティングゲームでは、グラフィックカードの性能がゲーム画面の鮮明さや滑らかさに直結します。優れたグラフィックス処理能力と高いフレームレート出力を備え、より優れたゲーム体験を提供できる NVIDIA GeForce GTX シリーズまたは AMD Radeon RX シリーズ グラフィックス カードを選択することをお勧めします。

C++ のモード関数の詳細な説明 統計において、モードとは、一連のデータ内で最も頻繁に現れる値を指します。 C++ 言語では、モード関数を記述することによって、任意のデータセット内のモードを見つけることができます。モード関数はさまざまな方法で実装できます。一般的に使用される 2 つの方法を以下で詳しく紹介します。 1 つ目の方法は、ハッシュ テーブルを使用して各数値の出現回数をカウントすることです。まず、各数値をキー、出現回数を値とするハッシュ テーブルを定義する必要があります。次に、特定のデータセットに対して次を実行します。

Windows オペレーティング システムは世界で最も人気のあるオペレーティング システムの 1 つであり、その新バージョン Win11 が大きな注目を集めています。 Win11 システムでは、管理者権限の取得は重要な操作であり、管理者権限を取得すると、ユーザーはシステム上でより多くの操作や設定を実行できるようになります。この記事では、Win11システムで管理者権限を取得する方法と、権限を効果的に管理する方法を詳しく紹介します。 Win11 システムでは、管理者権限はローカル管理者とドメイン管理者の 2 種類に分かれています。ローカル管理者はローカル コンピュータに対する完全な管理権限を持っています

OracleSQL の除算演算の詳細な説明 OracleSQL では、除算演算は一般的かつ重要な数学演算であり、2 つの数値を除算した結果を計算するために使用されます。除算はデータベース問合せでよく使用されるため、OracleSQL での除算演算とその使用法を理解することは、データベース開発者にとって重要なスキルの 1 つです。この記事では、OracleSQL の除算演算に関する関連知識を詳細に説明し、読者の参考となる具体的なコード例を示します。 1. OracleSQL での除算演算

C++ の剰余関数の詳しい説明 C++ では、剰余演算子 (%) を使用して、2 つの数値を除算した余りを計算します。これは、オペランドが任意の整数型 (char、short、int、long など) または浮動小数点数型 (float、double など) になる二項演算子です。剰余演算子は、被除数と同じ符号の結果を返します。たとえば、整数の剰余演算の場合、次のコードを使用して実装できます。

Vue.nextTick 関数の使い方と非同期更新での応用について詳しく説明 Vue の開発では、DOM を変更した直後にデータを更新したり、関連する操作が必要になったりするなど、データを非同期で更新する必要がある状況によく遭遇します。データが更新された直後に実行されます。このような問題を解決するために登場したのが、Vue が提供する .nextTick 関数です。この記事では、Vue.nextTick 関数の使用法を詳しく紹介し、コード例と組み合わせて、非同期更新でのアプリケーションを説明します。 1.Vue.nex

PHP のモジュロ演算子 (%) は、2 つの数値を除算した余りを取得するために使用されます。この記事では、モジュロ演算子の役割と使用法について詳しく説明し、読者の理解を深めるために具体的なコード例を示します。 1. モジュロ演算子の役割 数学では、整数を別の整数で割ると、商と余りが得られます。たとえば、10 を 3 で割ると、商は 3 になり、余りは 1 になります。モジュロ演算子は、この剰余を取得するために使用されます。 2. モジュロ演算子の使用法 PHP では、% 記号を使用してモジュロを表します。

Linux システム コール system() 関数の詳細説明 システム コールは、Linux オペレーティング システムの非常に重要な部分であり、システム カーネルと対話する方法を提供します。その中でも、system()関数はよく使われるシステムコール関数の一つです。この記事では、system() 関数の使用法を詳しく紹介し、対応するコード例を示します。システム コールの基本概念 システム コールは、ユーザー プログラムがオペレーティング システム カーネルと対話する方法です。ユーザープログラムはシステムコール関数を呼び出してオペレーティングシステムを要求します。
