Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/php-toolkit/di
dependency injection container
https://github.com/php-toolkit/di
container dependency-manager
Last synced: 7 days ago
JSON representation
dependency injection container
- Host: GitHub
- URL: https://github.com/php-toolkit/di
- Owner: php-toolkit
- License: mit
- Created: 2018-03-05T01:19:53.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2019-06-24T14:27:26.000Z (over 5 years ago)
- Last Synced: 2024-04-17T17:04:55.764Z (9 months ago)
- Topics: container, dependency-manager
- Language: PHP
- Homepage:
- Size: 29.3 KB
- Stars: 5
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Dependency injection container
简单的容器管理实现
## Install
```bash
composer require toolkit/di
```## 注册服务
```php
public function set(string $id, mixed $definition, array $opts = []): Container
```### 参数说明
#### 服务ID名
string `$id` 服务组件注册id
#### 服务定义
mixed(string|array|object|callback) `$definition` 服务实例对象|服务信息定义- string:
```php
$definition = className
```- array:
```php
$definition = [
// 1. 仅类名 参数($definition[0])则传入对应构造方法
'class' => 'className',
// 2. 类的静态方法, 参数($definition[0])则传入对应方法 className::staticMethod(args...)
'class' => 'className::staticMethod',
// 3. 类的动态方法, 参数($definition[0]) 则传入对应方法 (new className)->method(args...)
'class' => 'className->method',
// 设置参数方式, 没有key
[
arg1,arg2,arg3,...
]
// 设置属性 , // prop1 prop2 prop3 将会被收集 作为属性
prop1 => value1,
prop2 => value2,
... ...
// 一些服务设置(别名,是否共享). 将会合并到最后一个参数中
'_options' => [...]
]
```- object:
```php
$definition = new xxClass();
```- closure:
```php
$definition = function($di){
return object;
};
```
#### 选项
- array `$opts` 选项```php
[
'shared' => (bool), 是否共享,单例
'locked' => (bool), 是否锁定服务
'aliases' => (array), 别名
'init' => (bool), 立即初始化
]
```## License
MIT