uid/lib-di-container

PSR-11: Container 的简单实现。

1.0.1 2023-07-06 10:26 UTC

This package is not auto-updated.

Last update: 2024-09-26 16:13:44 UTC


README

License PHP Version

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 文件。