bcchicr / di-container
一个最小的PSR-11兼容的自动装配依赖注入容器
1.1.0
2024-03-08 15:56 UTC
README
一个符合PSR-11标准的简单依赖注入容器。实现了自动装配和缓存。
要求
- PHP 8.2或更高版本
安装
通过Composer安装
composer require bcchicr/di-container
使用
创建容器
use Bcchicr\Container\Container; $container = new Container();
注册依赖项
/** * Зарегистрировать вызываемое значение в качестве определения зависимости * * @param string $id * @param callable $callback * @return void */ $container->register($id, function(ContainerInterface $container) { return 'dependency'; }); /** * Зарегистрировать зависимость непосредственно * * @param string $id * @param mixed $instance * @return void */ $container->instance($id, 'instance');
检查从容器中获取依赖项的可能性
/** * Возвращает 'true` если зависимость с указанным ID может быть получена из контейнера * * @param string $id * @return bool */ $container->has($id);
从容器中获取依赖项
/** * Возвращает зависимость с указанным ID * * @param string $id * @return mixed * @throws Bcchicr\Container\Exception\NotFoundException Если ID неизвестен контейнеру * @throws Bcchicr\Container\Exception\ContainerGetException Если не получается получить зависимость из определения */ $container->get($id);
两次连续的具有相同ID的get()
调用返回同一对象
$dep1 = $container->get($id); $dep2 = $container->get($id); $dep1 === $dep2 // true
实现了按类名自动装配对象
$dep1 = $container->get(SomeClass::class);
这只有在以下条件下才可能
- 获取的对象的构造函数不包含参数
- 获取的对象的构造函数参数具有默认值
- 构造函数参数是可从容器中获取的对象(包括通过自动装配)