nacosvel/container-interop

实现不同容器对象之间的兼容性和互操作性。

dev-main / 1.x-dev 2024-09-22 12:40 UTC

This package is auto-updated.

Last update: 2024-09-22 12:50:58 UTC


README

实现不同容器对象之间的兼容性和互操作性。

该库通过搜索实现相关接口的已知类列表来发现可用的PSR-11容器实现,并返回第一个找到的实例。它支持绑定、实例化和在解析(即实例化或注入)类或依赖项时执行特定的回调或逻辑。

GitHub Tag Total Downloads Packagist Version Packagist PHP Version Support Packagist License

安装

您可以通过 Composer 安装此包。

composer require nacosvel/container-interop

用法

默认方法名称

如果您的容器使用标准方法名称(bind、make、resolving),您可以简单调用

use Nacosvel\Container\Interop\Discover;

Discover::container();

通过搜索实现相关接口的已知类列表来发现可用的PSR-11容器实现

自定义方法名称

如果您的容器使用不同的方法名称,请按照以下方式指定

use Nacosvel\Container\Interop\Discover;

Discover::container(
    container: $container,
    bind: 'customBindMethod',
    make: 'customMakeMethod',
    resolving: 'customResolvingMethod'
);
  • container: 您想要与之交互的容器实例。
  • bind: 用于绑定依赖项的方法名称。
  • make: 用于创建实例的方法名称。
  • resolving: 用于解析依赖项的方法名称。

访问应用程序

让我们看看一个简单的例子

use Nacosvel\Container\Interop\Application;

$application = Application::getInstance();

application 函数返回应用程序实例

$application = application();

访问容器

配置完成后,第三方包可以使用以下方式访问容器

use Nacosvel\Container\Interop\Application;

$container = Application::getInstance()->getContainer();

如果需要,您可以指定想要访问哪个 Container 实例

$container = application()->getContainer();

访问服务

您可以将类或接口名称传递给容器以解析服务

$cache = application(Cache::class);
$cache = application()->make(Cache::class);

此方法确保与各种容器实现兼容,无需担心它们的具体方法。

许可

Nacosvel Container Interop 在MIT许可证(MIT)下提供。有关更多信息,请参阅许可文件