2017-02-02 6 views
-1

Недостаточно документации по laravel.com. Может ли кто-нибудь объяснить мне, как создать контракты в Laravel с нуля.Создать контракты в ларавеле 5.4

Мне нужно выполнить Контракты в Laravel. Прямо сейчас, я использую Laravel 5.4

ответ

2

Contract - просто причудливое название для php interfaces. Мы используем их все время, а это не новая вещь.

Contracts/Interfaces Помогите нам поддерживать слабо связанную базу кода. См. Пример из документа ниже.

<?php 

namespace App\Orders; 

class Repository 
{ 
    /** 
    * The cache instance. 
    */ 
    protected $cache; 

    /** 
    * Create a new repository instance. 
    * 
    * @param \SomePackage\Cache\Memcached $cache 
    * @return void 
    */ 
    public function __construct(\SomePackage\Cache\Memcached $cache) 
    { 
     $this->cache = $cache; 
    } 

    /** 
    * Retrieve an Order by ID. 
    * 
    * @param int $id 
    * @return Order 
    */ 
    public function find($id) 
    { 
     if ($this->cache->has($id)) { 
      // 
     } 
    } 
} 

Вот когда когда-либо Repository Instantiate мы должны дать \SomePackage\Cache\Memcached экземпляр для того, чтобы код для работы. Следовательно, наш код тесно связан с \SomePackage\Cache\Memcached. Теперь посмотрите на код ниже.

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

То же самое, но теперь нам просто нужно предоставить некоторый интерфейс кэша. И за сценой вы могли бы сделать что-то подобное.

<?php 

namespace App\Orders; 

use Illuminate\Contracts\Cache\Repository as Cache; 

class RedisCache implements Cache { 
    // 
} 

Когда над Repository Instantiate, PHP будет выглядеть на Illuminate\Contracts\Cache\Repository и он был реализован RedisCache класса.

Смежные вопросы