Laravel绑定服务提供者概念

时间:2016-09-02 14:14:35

标签: php laravel oop

我目前正在学习如何构建laravel框架并进入服务提供商部分。在扩展 ServiceProvider 类的 DatabaseServiceProvider 中,我看到这行代码:

var intValues = values.Select(value => Convert.ToInt16(value));
var geos = entities.Geos.Where(g => intValues.Contains(g.ACode));

我在$ this-> app中混淆 app 是什么, app 是否是来自应用程序类实例的对象,以及它是否在实例化时实现,因此它可以从 DatabaseServiceProvider 类中使用,因为我没有看到它的实例化过程。以前回答这个新手问题。

1 个答案:

答案 0 :(得分:2)

在Laravel中, app 变量是一个服务容器。把它想象成框架的核心。从Facades到DB连接使用的所有内容都存储在那里。

此外,您可以使用指定的方法($this->app->singleton())将自己的对象存储在容器中。实际上有许多方法可以与容器进行交互。研究这个的最好方法是查看Laravel的文档(Laravel Service Container

app 对象正在Laravel引导程序中实例化,因此您无法在服务提供商中看到它。虽然我很好奇,可以深入挖掘框架来找到它。该类本身位于Illuminate\Foundation\Application中,并在bootstrap/app.php中实例化。