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

PHPは、特にWeb開発の分野で、最新のプログラミングで強力で広く使用されているツールのままです。 1)PHPは使いやすく、データベースとシームレスに統合されており、多くの開発者にとって最初の選択肢です。 2)動的コンテンツ生成とオブジェクト指向プログラミングをサポートし、Webサイトを迅速に作成および保守するのに適しています。 3)PHPのパフォーマンスは、データベースクエリをキャッシュおよび最適化することで改善でき、その広範なコミュニティと豊富なエコシステムにより、今日のテクノロジースタックでは依然として重要になります。

PHPでは、弱い参照クラスを通じて弱い参照が実装され、ガベージコレクターがオブジェクトの回収を妨げません。弱い参照は、キャッシュシステムやイベントリスナーなどのシナリオに適しています。オブジェクトの生存を保証することはできず、ごみ収集が遅れる可能性があることに注意する必要があります。

\ _ \ _ Invokeメソッドを使用すると、オブジェクトを関数のように呼び出すことができます。 1。オブジェクトを呼び出すことができるように\ _ \ _呼び出しメソッドを定義します。 2。$ obj(...)構文を使用すると、PHPは\ _ \ _ Invokeメソッドを実行します。 3。ロギングや計算機、コードの柔軟性の向上、読みやすさなどのシナリオに適しています。

繊維はPhp8.1で導入され、同時処理機能が改善されました。 1)繊維は、コルーチンと同様の軽量の並行性モデルです。 2)開発者がタスクの実行フローを手動で制御できるようにし、I/O集約型タスクの処理に適しています。 3)繊維を使用すると、より効率的で応答性の高いコードを書き込むことができます。

PHPコミュニティは、開発者の成長を支援するための豊富なリソースとサポートを提供します。 1)リソースには、公式のドキュメント、チュートリアル、ブログ、LaravelやSymfonyなどのオープンソースプロジェクトが含まれます。 2)StackOverFlow、Reddit、およびSlackチャネルを通じてサポートを取得できます。 3)開発動向は、RFCに従うことで学ぶことができます。 4)コミュニティへの統合は、積極的な参加、コード共有への貢献、および学習共有への貢献を通じて達成できます。

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHPは、シンプルな構文と高い実行効率を備えたWeb開発に適しています。 2。Pythonは、簡潔な構文とリッチライブラリを備えたデータサイエンスと機械学習に適しています。

PHPは死にかけていませんが、常に適応して進化しています。 1)PHPは、1994年以来、新しいテクノロジーの傾向に適応するために複数のバージョンの反復を受けています。 2)現在、電子商取引、コンテンツ管理システム、その他の分野で広く使用されています。 3)PHP8は、パフォーマンスと近代化を改善するために、JITコンパイラおよびその他の機能を導入します。 4)Opcacheを使用してPSR-12標準に従って、パフォーマンスとコードの品質を最適化します。

PHPの将来は、新しいテクノロジーの傾向に適応し、革新的な機能を導入することで達成されます。1)クラウドコンピューティング、コンテナ化、マイクロサービスアーキテクチャに適応し、DockerとKubernetesをサポートします。 2)パフォーマンスとデータ処理の効率を改善するために、JITコンパイラと列挙タイプを導入します。 3)パフォーマンスを継続的に最適化し、ベストプラクティスを促進します。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

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

Dreamweaver Mac版
ビジュアル Web 開発ツール

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン
