nacosvel / container-interop
实现不同容器对象之间的兼容性和互操作性。
dev-main / 1.x-dev
2024-09-22 12:40 UTC
Requires
- php: >=8.0
- psr/container: ^1.1.1|^2.0.1
This package is auto-updated.
Last update: 2024-09-22 12:50:58 UTC
README
实现不同容器对象之间的兼容性和互操作性。
该库通过搜索实现相关接口的已知类列表来发现可用的PSR-11容器实现,并返回第一个找到的实例。它支持绑定、实例化和在解析(即实例化或注入)类或依赖项时执行特定的回调或逻辑。
安装
您可以通过 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)下提供。有关更多信息,请参阅许可文件。