slightly-interactive / di-container
1.0.1
2021-01-26 19:14 UTC
Requires
- php: >=7.1
- phpunit/phpunit: ^9.2
- psr/container: ^1.0
Provides
This package is auto-updated.
Last update: 2024-08-27 03:05:58 UTC
README
概览
DI Container是一个符合PSR-11规范的自动装配依赖注入容器。
使用方法
实例化容器
use SlightlyInteractive\DI;
$container = new Container();
解析类
$myClass = $container->get(MyClass::class);
默认情况下,容器每次请求相同的类时都会传递完全相同的实例。
您可以告诉容器每次请求给定的类时都创建一个新实例
$container->set(MyClass::class)->factory();
或者,在实例化容器时,您可以告诉它每次、对每个类都创建一个新实例
$container = new Container(Container::INSTANTIATE_FACTORY);
然后您可以让特定的类使用单个实例
$container->set(MySingleton::class)->singleton();
您可以将接口映射到特定的具体实例
$container->set(MyInterface::class)->map(MyClass::class);
您可以为特定的类这样做
class MyDependent
{
public function __construct(
RealClass $realClass,
MyInterface $myInterface
) {
...
}
...
}
$container->set(MyDependent::class)
->argument('myInterface', MyClass::class);
您还可以使用参数参数将非对象值传递给参数
class MyDependent
{
public function __construct(
RealClass $realClass,
string $apiKey
) {
...
}
...
}
$container->set(MyDependent::class)
->argument('apiKey', $_ENV['API_KEY']);