kyrill / php-di-container
PHP 依赖注入容器
V1.1.0
2024-01-17 10:59 UTC
Requires
- php: >=8.1
README
PHP 依赖注入容器
这是一个简单的 PHP 自动依赖注入容器。
基本设置
要安装此包,请在项目的根目录下运行以下命令
composer require kyrill/php-di-container
用法
创建容器
您可以通过实例化 Container 类来创建容器。
<?php use Kyrill\DIContainer\Container; $container = new Container();
注册类
使用函数注册类
您可以使用函数注册一个类。首先给类一个唯一的名称,然后在函数中放入类定义:“类定义”,在类定义中给出类的命名空间和参数。之后定义该类是否为单例。如果不希望使用参数,可以留空数组。
<?php $container->register('name', new ClassDefinition('namespace\\classname/', ['argument1', 'argument2'], true));
通过文件注册类
您可以创建一个具有以下结构的 json 文件来注册类、别名或接口
{
"services": {
"namespace\\classname": {
"arguments": {
"test": "\\Kyrill\\PhpDiContainer\\TestInterface",
"foo": "bar"
}
},
"namespace\\alias": {
"class": "Kyrill\\PhpDiContainer\\Test",
"arguments": {
"test": "Kyrill\\PhpDiContainer\\TestInterface",
"foo": "bar"
}
}
}
}
您可以使用别名来注册类或接口。别名在您想用不同的名称使用类或接口时很有用。对于别名和接口,您必须使用 class 键。arguments 键是可选的。如果您想不使用参数使用类或接口,可以省略。
通过函数注册类
要注册文件,您需要创建一个 FileReader 类。这个类需要实现 FileReaderInterface。您可以通过使用 registerFile 函数来注册文件。默认情况下有一个 JsonFileReader 类。这个类读取 json 文件并注册类或接口。但您也可以创建自己的 FileReader 类。
<?php $classRegister = new ClassRegistar(); $classRegister->registerFile('.\di.json', new JsonFileReader(), $container);
获取类
您可以使用 resolve 函数来获取类。如果您想获取别名,只需在函数中放入带引号的别名名,例如:'aliasname'。
<?php $container->resolve(Classname::class);
创建自己的 FileReader
要创建自己的 FileReader 类,您需要实现 FileReaderInterface。这个接口有一个函数 readFile。这个函数需要返回一个包含类、别名或接口的数组。
许可
此项目采用 MIT 许可证 - 有关详细信息,请参阅 LICENSE.md 文件。