【发布时间】:2016-03-09 13:24:30
【问题描述】:
我正在尝试使用 Laravel 数据库合约而不是外观 (DB::table) 并获得:
ReflectionException
Class Illuminate\Contracts\Database does not exist
使用Illuminate\Database\DatabaseManager 类可以正常工作,但除了依赖注入之外,我更愿意不使用具体类,而是使用抽象类(合同/接口)。
这是我尝试过的。
控制器:
<?php namespace App\Http\Controllers;
use Illuminate\Contracts\Database as DB;
class MyController extends Controller
{
public function __construct(DB $db)
{
$this->db = $db;
}
}
AppServiceProvider:
public function register()
{
$this->app->bind(
'Illuminate\Contracts\Auth\Registrar',
'App\Services\Registrar',
'Illuminate\Contracts\Database'
);
}
任何帮助表示赞赏!
【问题讨论】:
-
您可以添加另一个外观,但 __construct(您的控制器上的 DB 确实是个坏主意。我想知道您为什么决定使用 Illuminate\Contracts\Database ?
-
Illuminate\Contracts\Database在 laravel 合约中不可用 -
在此处查看可用合同列表:laravel.com/docs/5.1/contracts
标签: php laravel interface laravel-5.1