首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Laravel的合同5

在Laravel的合同5
EN

Stack Overflow用户
提问于 2014-12-07 10:12:48
回答 1查看 2.1K关注 0票数 1

接口我理解其原因。唯一的责任我明白理由。基本上,我理解为什么选择‘合同’路径,我只是在努力理解实现。

例如,文档给出了下面的示例:

代码语言:javascript
复制
<?php namespace App\Orders;

use Illuminate\Contracts\Cache\Repository as Cache;

class Repository {

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

}

如果我要用第三方的、与框架无关的缓存驱动程序替换laravel本地缓存驱动程序,那么我需要编写一个适配器来遵守Laravel5.0缓存协议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-23 02:31:22

我想你是在问将接口绑定到实现

如何将实现绑定到接口?

代码语言:javascript
复制
$this->app->bind('App\Contracts\EventPusher', 'App\Services\PusherEventPusher');

而Laravel本身在哪里绑定默认实现呢?

‘'Illuminate/Foundation/Application.php’中,它告诉容器抽象关键字的别名是什么:

代码语言:javascript
复制
'cache' => ['Illuminate\Cache\CacheManager', 'Illuminate\Contracts\Cache\Factory'],

这样,当你写

代码语言:javascript
复制
$this->app->make('Illuminate\Cache\CacheManager')

代码语言:javascript
复制
$this->app->make('Illuminate\Contracts\Cache\Factory')

基本上和

代码语言:javascript
复制
$this->app->make('cache')

在Illuminate\Cache\CacheServiceProvider.php中,它告诉容器什么是到抽象关键字的真正绑定:

代码语言:javascript
复制
$this->app->singleton('cache', function ($app) {
    return new CacheManager($app);
});

如果你还有其他问题请告诉我。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27341595

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档