Laravel-contracts
Laravel-契約
Laravelコントラクトは、フレームワークによって提供されるさまざまな機能とコアサービスを備えた一連のインターフェイスです。
たとえば、 Illuminate \ Contracts \ Queue \ Queue コントラクトはジョブのキューイングに必要なメソッドを使用し、 Illuminate \ Contracts \ Mail \ Mailer はメールの送信にメソッドを使用します。
定義されたすべてのコントラクトには、フレームワークの対応する実装が含まれます。 すべてのLaravel契約は、以下に記載されているようにGitHubリポジトリで利用可能です-
https://github.com/illuminate/contracts
このリポジトリは、Laravelフレームワークで利用可能なさまざまなコントラクトを提供し、それに応じてダウンロードして使用できます。
重要なポイント
Laravel契約で作業している間、次の重要な点に注意してください-
- クラスのコンストラクターでファサードを定義することは必須です。
- コントラクトはクラスで明示的に定義され、コンストラクターでコントラクトを定義する必要はありません。
例
以下に記載されているLaravelの認可に使用される契約を検討してください-
<?php
namespace Illuminate\Contracts\Auth\Access;
interface Authorizable{
/**
*Determine if the entity has a given ability.
*
*@param string $ability
* @param array|mixed $arguments
*@return bool
*/
public function can($ability, $arguments = []);
}
コントラクトは、 ability という名前の parameter と array の形式のユーザーIDを使用する arguments を含む関数canを使用します。
あなたは以下の構文に示すように契約を定義する必要があります-
interface <contract-name>
契約は、堅牢で十分にテストされたLaravelアプリケーションを作成するためのファサードのように使用されます。 コントラクトとファサードの使用には、さまざまな*実際的な違い*があります。
次のコードは、リポジトリをキャッシュするためのコントラクトの使用を示しています-
<?php
namespace App\Orders;
use Illuminate\Contracts\Cache\Repository as Cache;
class Repository{
/**
*The cache instance.
*/
protected $cache;
/**
*Create a new repository instance.
*
*@param Cache $cache
* @return void
*/
public function __construct(Cache $cache) {
$this->cache = $cache;
}
}
契約には実装も新しい依存関係も含まれません。指定されたコントラクトの代替実装を簡単に記述できるため、ユーザーはコードベースを変更せずにキャッシュ実装を置き換えることができます。