我Service Container在Laravel项目中哪里可以找到 .
所有这些都Service Providers位于app/Providers目录中的单个位置,但是在哪里可以找到Service Container?
服务容器是 Laravel 框架的核心组件,您可以直接使用它,您不应该像服务提供商那样创建自己的服务容器。
您可以将服务容器想象为一个关联数组,您可以在其中存储依赖项(服务)以及如何解决它们的逻辑。然后,您可以使用服务容器根据提供的逻辑为您提供所需的内容。
更容易想象服务容器是一个始终可用的黑匣子。您的应用程序首先在其中注册(放置)某些规则(例如,如果有人想要一个实现PriceCalculator接口的对象,则给他一个类的对象MyPriceCalculator)。这是通过register()您的服务提供商的方法完成的:
$this->app->bind('App\Contracts\PriceCalculator', 'App\Shop\MyPriceCalculator');
Run Code Online (Sandbox Code Playgroud)
然后这个黑匣子始终可供您使用,因此如果您需要PriceCalculator对象(例如,在购物车控制器中的某个位置来计算某个订单的价格),您现在可以不用执行以下操作:
$calculator = new \App\Shop\MyPriceCalculator;
Run Code Online (Sandbox Code Playgroud)
请求服务容器为您提供合适的容器:
$calculator = app()->make('App\Contracts\PriceCalculator');
Run Code Online (Sandbox Code Playgroud)
请注意我们如何要求服务容器为我们提供接口的实现,并反过来为我们提供新的App\Shop\MyPriceCalculator对象,因为这就是我们之前定义(注册)App\Contracts\PriceCalculator服务的方式。
使用服务容器是管理应用程序的所有依赖项的好方法,因为您的代码将使用抽象,并且这些抽象的解析方式将始终在一个地方定义(这意味着如果您以后想更改某些内容,则更容易维护) )。
如果您是 Laravel 的新手,我建议您暂时跳过服务容器,因为它是一个更高级的主题,您需要更好地理解依赖注入模式才能完全掌握并正确使用它。
您可以在此处阅读官方文档。
| 归档时间: |
|
| 查看次数: |
1680 次 |
| 最近记录: |