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 = []);
}

契約は、を含む機能缶を使用します parameter 名前付き ability そして arguments これは、ユーザーIDを次の形式で使用します。 array

以下の構文に示すように、コントラクトを定義する必要があります-

interface <contract-name>

コントラクトは、堅牢で十分にテストされたLaravelアプリケーションを作成するためのファサードのように使用されます。いろいろありますpractical differences 契約書やファサードを使用します。

次のコードは、リポジトリをキャッシュするためのコントラクトの使用を示しています-

<?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;
   }
}

コントラクトには実装と新しい依存関係は含まれていません。指定されたコントラクトの代替実装を作成するのは簡単なので、ユーザーはコードベースを変更せずにキャッシュ実装を置き換えることができます。