andrewalf / service_providers
为 slim 框架提供的类似 Laravel 的服务提供者
dev-master
2018-05-30 21:44 UTC
Requires
- psr/container: ^1.0
Requires (Dev)
- phpunit/phpunit: ^7
This package is not auto-updated.
Last update: 2024-09-29 06:08:50 UTC
README
此包是为 Slim 定制的,以使其配置更佳,但您也可以在任何项目中使用它。此包与框架无关,它仅依赖于 PSR-11 容器接口。
安装
composer require andrewalf/service_providers
运行测试
composer run tests
用法
- 在您的项目根目录中创建
service_providers.php文件。此文件应返回包含服务提供者完整类名的数组。 - 在您的
index.php文件中,将此文件作为变量引入。 - (如果未使用 RouteServiceProvider,则跳过此步骤) 在您的
index.php文件中,将您的应用实例添加到 DI 容器中,键为 "app"。 - 创建
ServiceProviderRunner实例,传入 psr-11 DI 容器和提供者数组作为构造函数参数。调用它的 runProviders 方法
现在您可以添加您自己的服务提供者。它们有两个方法: register 和 boot。在 register 方法中,首先调用该方法,应在容器中注册依赖项。在 boot 方法中,您可以自由修改和配置您的应用。例如,您可以在 EventListenersServiceProvider 中保留所有监听器附加项。
Slim 3 框架的用法示例。
index.php
$app = new \Slim\App($settings); $container = $app->getContainer(); // we use RouteServiceProvider $container['app'] = function ($c) use ($app) { return $app; }; $providersArray = require '../service_providers.php'; (new \Andrewalf\ServiceProviderRunner($app->getContainer(), $providersArray))->runProviders();
service_providers.php
return [ \Andrewalf\RouteServiceProvider::class, \Andrewalf\AppServiceProvider::class ];
RouteServiceProvider
这主要是为 Slim 定制的。此提供者从分离的文件加载应用路由:web.php 和 api.php。这些文件的路径在提供者中是硬编码的。您可以随意复制并修改它。
待办事项:复制包提供者到您的提供者目录的 composer 命令。