依赖注入容器初始化库。

v0.8 2021-01-17 01:17 UTC

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();