接口我理解其原因。唯一的责任我明白理由。基本上,我理解为什么选择‘合同’路径,我只是在努力理解实现。
例如,文档给出了下面的示例:
<?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缓存协议吗?
发布于 2015-04-23 02:31:22
我想你是在问将接口绑定到实现。
如何将实现绑定到接口?
$this->app->bind('App\Contracts\EventPusher', 'App\Services\PusherEventPusher');而Laravel本身在哪里绑定默认实现呢?
在‘'Illuminate/Foundation/Application.php’中,它告诉容器抽象关键字的别名是什么:
'cache' => ['Illuminate\Cache\CacheManager', 'Illuminate\Contracts\Cache\Factory'],这样,当你写
$this->app->make('Illuminate\Cache\CacheManager')或
$this->app->make('Illuminate\Contracts\Cache\Factory')基本上和
$this->app->make('cache')在Illuminate\Cache\CacheServiceProvider.php中,它告诉容器什么是到抽象关键字的真正绑定:
$this->app->singleton('cache', function ($app) {
return new CacheManager($app);
});如果你还有其他问题请告诉我。
https://stackoverflow.com/questions/27341595
复制相似问题