gpt4 book ai didi

laravel - 在 laravel 5.4 中创建合约

转载 作者:行者123 更新时间:2023-12-04 01:48:36 24 4
gpt4 key购买 nike

关于 laravel.com 的文档还不够。任何人都可以指导我如何在 Laravel 中创建契约(Contract)从头开始。

我需要在 Laravel 中执行契约(Contract).现在,我正在使用 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实例化我们 应该 \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;
}
}

同样的事情,但现在我们只需要提供 一些缓存接口(interface)。在幕后你可以做这样的事情。
<?php

namespace App\Orders;

use Illuminate\Contracts\Cache\Repository as Cache;

class RedisCache implements Cache {
//
}

当高于 Repository实例化,php会查看 Illuminate\Contracts\Cache\Repository并已由 RedisCache 实现类(class)。

关于laravel - 在 laravel 5.4 中创建合约,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41994778/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com