Недостаточно документации по laravel.com
. Может ли кто-нибудь объяснить мне, как создать контракты в Laravel
с нуля.Создать контракты в ларавеле 5.4
Мне нужно выполнить Контракты в Laravel
. Прямо сейчас, я использую Laravel 5.4
Недостаточно документации по laravel.com
. Может ли кто-нибудь объяснить мне, как создать контракты в Laravel
с нуля.Создать контракты в ларавеле 5.4
Мне нужно выполнить Контракты в Laravel
. Прямо сейчас, я использую Laravel 5.4
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
класса.