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 명명 된 abilityarguments 사용자 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;
   }
}

계약에는 구현 및 새로운 종속성이 없습니다. 지정된 계약의 대체 구현을 작성하기가 쉽기 때문에 사용자는 코드베이스를 수정하지 않고도 캐시 구현을 대체 할 수 있습니다.