uid / lib-di-container
PSR-11: Container 的简单实现。
1.0.1
2023-07-06 10:26 UTC
Requires
- php: >=8.1
- psr/container: ^1.0
Requires (Dev)
- phpunit/phpunit: ^9.0
This package is not auto-updated.
Last update: 2024-09-26 16:13:44 UTC
README
PSR-11: Container 的简单实现。
描述
lib-di-container 是一个轻量级的 PHP 库,提供了 PSR-11 容器接口的简单实现。它允许您在应用程序中管理和检索对象和依赖项。
特性
- 实现了 PSR-11 容器接口。
- 支持对象实例化和检索。
- 提供依赖注入和方法调用。
安装
您可以通过 Composer 安装 lib-di-container
composer require uid/lib-di-container
用法
创建容器
要创建一个新的容器,实例化 Container 类
use Uid\Utils\Container\Container;
$container = new Container();
定义服务
您可以使用 set 方法在容器中定义服务。服务可以定义为匿名函数或类名
// Define a service as an anonymous function
$container->set('myService', function ($container) {
return new MyService();
});
// Define a service as a class name
$container->set('myService', 'MyService');
检索服务
要从容器中检索服务,请使用 get 方法
$myService = $container->get(MyService::class);
调用方法
容器允许您使用 invoke 方法在对象上调用方法。您可以指定要调用的对象和方法,以及任何必需的参数
$result = $container->invoke($myService, 'someMethod', ['param1' => $value1]);
API 参考
容器
Container 类实现了 Psr\Container\ContainerInterface 接口。
方法
__construct(array $definitions = []):创建一个新的容器,可选地带有初始服务定义。value(string $name, mixed $value): self:定义要存储在容器中的值。alias(string $name, string $alias): self:在容器中为名称定义别名。set(string $name, string|callable $value, array $constants = [], bool $singleton = false): self:在容器中定义服务。has(string $id): bool:如果容器可以返回给定标识符的条目,则返回 true。get(string $id): mixed:从容器中检索服务。invoke(string|object $entry, string $method = '__invoke', array $constants = []): mixed:在对象上调用方法。
要求
- PHP >= 8.1
- PSR-Container >= 1.0
贡献
欢迎贡献!如果您发现任何问题或对改进有建议,请随时提交拉取请求。
许可
本项目采用 Apache License 2.0 许可。有关更多信息,请参阅 LICENSE 文件。