Php 尝试在DatabaseServiceProvider中使用singleton创建的ConnectionFactory类

Php 尝试在DatabaseServiceProvider中使用singleton创建的ConnectionFactory类,php,laravel,laravel-5,service-provider,Php,Laravel,Laravel 5,Service Provider,因此Tapestry有其默认的DatabaseServiceProvider.php,其中包含以下代码 $this->app->singleton('db.factory', function ($app) { return new ConnectionFactory($app); }); 我希望能够使用由此创建的db.factory facade建立新连接。但是当我打电话的时候 db.factory::make($config,$factory); 当然这不起作用,我得

因此Tapestry有其默认的DatabaseServiceProvider.php,其中包含以下代码

$this->app->singleton('db.factory', function ($app) {
    return new ConnectionFactory($app);
});
我希望能够使用由此创建的db.factory facade建立新连接。但是当我打电话的时候

db.factory::make($config,$factory);
当然这不起作用,我得到一个错误:

使用未定义的常数db-假定为“db”


我如何才能做到这一点?

必须通过直接访问singleton。我最喜欢的方法是
app()
helper函数:

app('db.factory')->make($config, $factory);

谢谢卢卡斯,你能给我解释一下原因吗。试图学习拉威尔对我来说是非常困难的为什么这是一个非常广泛的问题
db.factory::
如果这是一个门面,就可以工作。Facades基本上只是从容器中解析某个类(就像我们使用
app('db.factory')
)并将静态方法调用“转换”为动态方法调用。这在db.factory中是不可能的,因为它没有门面。如果有什么不清楚的地方,请告诉我:)不,那太好了,谢谢,现在我要去试着找出我的一个中间软件停止工作的原因