椭圆容器 / 容器覆盖
Psr-11 容器装饰器,允许在运行时覆盖容器条目
1.0.1
2018-02-23 09:48 UTC
Requires
- php: >=7.0
- psr/container: ^1.0
Requires (Dev)
- eloquent/phony-kahlan: ^1.0
- kahlan/kahlan: ^4.0
Provides
This package is auto-updated.
Last update: 2024-08-26 00:16:55 UTC
README
本软件包提供了一个 Psr-11 容器 装饰器,允许在运行时覆盖容器条目。
要求 php >= 7.0
安装 composer require ellipse/container-overridden
运行测试 ./vendor/bin/kahlan
装饰容器
本软件包提供了一个 Ellipse\Container\OverriddenContainer
类,可用于装饰任何 Psr-11 容器。它接受一个别名 => 值对的关联数组作为第二个参数。一旦装饰,容器的 ->has()
方法将在给定的别名是这个数组的键时返回 true,而 ->get()
方法将返回其关联的值。当别名不是数组的键时,将使用原始容器的 ->has()
和 ->get()
方法。
当与 ellipse/container-reflection 一起使用时,特别有用。
<?php namespace App; class SomeClass { public function __construct(SomeOtherClass $class) { // } }
<?php namespace App; use Psr\Http\Message\ServerRequestInterface; class SomeOtherClass { public function __construct(ServerRequestInterface $request) { // } }
<?php use Psr\Http\Message\ServerRequestInterface; use Some\Psr7ServerRequestFactory; use Some\Psr11Container; use Ellipse\Container\ReflectionContainer; use Ellipse\Container\OverriddenContainer; use App\SomeClass; // Get a Psr-7 request from somewhere. $request = Psr7ServerRequestFactory::fromGlobals(); // Get an instance of some Psr-11 container. $container = new Psr11Container; // Decorate the container. $container = new ReflectionContainer( new OverriddenContainer($container, [ ServerRequestInterface::class => $request, ]) ); // Returns an instance of SomeClass with the overridden Psr-7 instance injected in it's // SomeOtherClass dependency. $container->get(SomeClass::class);