starbug / di
依赖注入容器初始化库。
v0.8
2021-01-17 01:17 UTC
Requires
- php-di/php-di: ^6.0
Requires (Dev)
This package is auto-updated.
Last update: 2024-09-17 09:03:29 UTC
README
为 PHP-DI 提供的依赖注入元包和容器初始化库。
包含内容
- PHP-DI/PHP-DI 实际的依赖注入库。
- ContainerFactory - 用于初始化容器和运行初始化后步骤的可配置工厂。
- DefaultConfigurationHandler - 工厂的默认处理器,从根包中的
etc/di.php
加载容器定义,并覆盖提供该文件的模块中的etc/di.php
。它还可以在容器初始化后设置默认时区和注册错误处理器。
使用方法
应用程序引导
使用此库的最简单方法是使用它引导您的应用程序,并让它使用默认配置处理器。
include("vendor/starbug/di/bootstrap/init.php"); // You now have a Psr\Container\ContainerInterface instance $application = $container->make("MyApp");
直接初始化
直接执行相同的事情。
use Starbug\DI\ContainerFactory; include("vendor/autoload.php"); $container = ContainerFactory::withDefaultHandler() ->create(); // You now have a Psr\Container\ContainerInterface instance $application = $container->make("MyApp");
定义
默认处理器将寻找 etc/di.php
文件以加载定义。要自定义 MyApp
,我们的文件可能如下所示。
return [
"MyApp" => function () {
$app = new MyApp();
$app->addMiddleware(new MyMiddleware());
return $app;
}
];
请参阅 PHP-DI 关于 PHP 定义的文档。
模块
如果您正在使用 starbug/composer-modules-plugin,默认处理器还会检查每个模块是否存在 etc/di.php
文件以加载额外的定义。
自定义处理器
要使用自定义处理器,请调用 withHandlers
而不是 withDefaultHandler
并传递您的处理器。
use Starbug\DI\ContainerFactory; $container = ContainerFactory::withHandlers( new MyHandler(), new SecondHandler() )->create();
或者,如果您不想使用静态辅助方法,您可以轻松手动完成。
use Starbug\DI\ContainerFactory; $factory = new ContainerFactory(); $factory->addHandler(new MyHandler()); $container = $factory->create();