在Laravel项目中哪里可以找到服务容器?

在Laravel项目中哪里可以找到服务容器?,laravel,Laravel,在Laravel项目中,在哪里可以找到服务容器 所有服务提供商都位于app/Providers目录中的单个位置,但是在哪里可以找到服务容器?服务容器是Laravel framework的核心组件,可以按原样使用,您不应该像以前那样创建自己的服务容器,例如,与服务提供商合作 您可以想象服务容器是一个关联数组,您可以在其中存储依赖项(服务)以及如何解析它们的逻辑。然后,您可以使用服务容器根据所提供的逻辑提供所需的内容 更容易想象服务容器是一个始终可用的黑盒子。您的应用程序首先在其中注册(放置)某些规

Laravel项目中,在哪里可以找到
服务容器


所有
服务提供商
都位于
app/Providers
目录中的单个位置,但是在哪里可以找到
服务容器

服务容器是Laravel framework的核心组件,可以按原样使用,您不应该像以前那样创建自己的服务容器,例如,与服务提供商合作

您可以想象服务容器是一个关联数组,您可以在其中存储依赖项(服务)以及如何解析它们的逻辑。然后,您可以使用服务容器根据所提供的逻辑提供所需的内容

更容易想象服务容器是一个始终可用的黑盒子。您的应用程序首先在其中注册(放置)某些规则(例如,如果有人想要一个实现
PriceCalculator
接口的对象,那么给他一个类
MyPriceCalculator
)的对象。这是在服务提供商的
register()
方法中完成的:

$this->app->bind('app\Contracts\PriceCalculator','app\Shop\MyPriceCalculator');
因此,如果您需要
PriceCalculator
对象(例如,在购物车控制器中的某个位置计算某订单的价格),您现在可以不执行以下操作:

$calculator=new\App\Shop\MyPriceCalculator;
请服务容器为您制作一个合适的:

$calculator=app()->make('app\Contracts\PriceCalculator');
请注意,我们是如何要求服务容器为我们提供一个接口的实现,并反过来为我们提供新的
App\Shop\MyPriceCalculator
对象的,因为这是我们之前定义(注册)的
App\Contracts\PriceCalculator
服务的方式

使用服务容器是管理应用程序所有依赖项的一种很好的方法,因为您的代码将使用抽象,并且这些抽象的解析方式将始终在一个地方定义(这意味着,如果您以后想要更改某些内容,则更容易维护)

如果您是Laravel的新手,我建议您暂时跳过服务容器,因为这是一个更高级的主题,您需要更好地理解依赖注入模式,才能完全掌握它并正确地使用它


您可以阅读官方文档。

服务容器是Laravel框架的核心组件,可以直接使用,您不应该像使用服务提供商那样创建自己的服务容器

您可以想象服务容器是一个关联数组,您可以在其中存储依赖项(服务)以及如何解析它们的逻辑。然后,您可以使用服务容器根据所提供的逻辑提供所需的内容

更容易想象服务容器是一个始终可用的黑盒子。您的应用程序首先在其中注册(放置)某些规则(例如,如果有人想要一个实现
PriceCalculator
接口的对象,那么给他一个类
MyPriceCalculator
)的对象。这是在服务提供商的
register()
方法中完成的:

$this->app->bind('app\Contracts\PriceCalculator','app\Shop\MyPriceCalculator');
因此,如果您需要
PriceCalculator
对象(例如,在购物车控制器中的某个位置计算某订单的价格),您现在可以不执行以下操作:

$calculator=new\App\Shop\MyPriceCalculator;
请服务容器为您制作一个合适的:

$calculator=app()->make('app\Contracts\PriceCalculator');
请注意,我们是如何要求服务容器为我们提供一个接口的实现,并反过来为我们提供新的
App\Shop\MyPriceCalculator
对象的,因为这是我们之前定义(注册)的
App\Contracts\PriceCalculator
服务的方式

使用服务容器是管理应用程序所有依赖项的一种很好的方法,因为您的代码将使用抽象,并且这些抽象的解析方式将始终在一个地方定义(这意味着,如果您以后想要更改某些内容,则更容易维护)

如果您是Laravel的新手,我建议您暂时跳过服务容器,因为这是一个更高级的主题,您需要更好地理解依赖注入模式,才能完全掌握它并正确地使用它


您可以阅读官方文档。

您是在询问在哪里可以找到容器的源代码还是如何访问容器的实例?。如果后面的函数
app()
会给你一个容器的实例,我想你可以在这里找到一些东西[@JaviStolz,“服务容器”中的“容器”是什么是什么意思?它是某个目录、某个php文件还是某个php类?它是什么?你是在问在哪里可以找到容器的源代码还是如何访问容器的实例?如果后面的函数
app()
会给你一个容器的实例,我想你可以在这里找到一些东西[@JaviStolz,这是什么意思“服务容器”中的“容器”是指?它是某个目录、某个php文件还是某个php类?它是什么?所以“服务容器”只用于注册和解析服务?它不包含实际的“服务代码”?如果是,那么我们应该将服务代码放在哪里?放在哪个文件夹中?是的,它不包含任何“服务代码”(基本上只是你的类)。至于放在哪里,你可以自己决定。有些类将在你安装的软件包中,有些将由你自己编写。通常我会尝试在
应用程序中将它们分组