matecat / simple-dic
简单DIC客户端
v1.1.10
2019-09-05 13:12 UTC
Requires
- php: >=5.5
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.15
- phpstan/phpstan: ^0.11.12
- phpunit/phpunit: ^8.2
- symfony/console: ^4.3
- symfony/yaml: ^4.3
README
Simple DIC 是一个简单的依赖注入容器(DIC)。
基本用法
要初始化DIC,您必须提供一个配置文件。使用 initFromFile
方法
这里是一个示例(YAML格式)
dummy-key: 'dummy-value' dummy-array: [43243,2432,4324,445667] three: 3 two: 2 acme: class: Matecat\SimpleDIC\Dummy\Acme acme-calculator: class: Matecat\SimpleDIC\Dummy\AcmeCalculator method: init method_arguments: ['@three', '@two'] acme-parser: class: Matecat\SimpleDIC\Dummy\AcmeParser arguments: ['string'] acme-repo: class: Matecat\SimpleDIC\Dummy\AcmeRepo arguments: ['@acme']
在传递依赖项名称后,您可以指定
class
:完整的类名arguments
:传递给构造函数的参数数组method
:如果您想运行类的特定方法(方法可以是静态的或不静态的)method_arguments
:传递给运行类的实例方法的参数数组
如果您想将一个已存在的条目传递给另一个,只需简单地使用 '@' 符号。
更改缓存目录
您可以使用 setCacheDir
来设置您的缓存目录。在调用 initFromFile
方法之前这样做
DIC::setCacheDir(__DIR__.'/../_cache_custom'); DIC::initFromFile(__DIR__ . '/../config/ini/redis.ini'); // ...
参数
如果您想使用一个单独的参数文件,您可以使用 DICParams
类。看看以下参数配置文件示例(YAML格式)
your_secret_token: 'YOUR_SECRET_TOKEN' your_secret_password: 'YOUR_SECRET_PASS'
现在您可以设置 DICParams
类
use Matecat\SimpleDIC\DICParams; DICParams::initFromFile('your_params_file.yaml');
然后,您可以在DIC配置文件中使用 '%' 语法。请注意,您必须 在 实例化DIC之前设置参数。
client: class: 'SimpleDIC\Dummy\Client' arguments: ['%your_secret_token%', '%your_secret_password%']
环境变量支持
要使用您的环境变量,只需遵循 %env(xxxx)%
语法,考虑以下示例
logger: class: 'Matecat\SimpleDIC\Dummy\Logger' arguments: ['%env(FOO)%']
检索条目
要检索条目,请使用 get
方法
use Matecat\SimpleDIC\DIC; $dependency = DIC::get('key');
请注意,该方法返回
false
如果条目配置有误;NULL
如果条目不存在。
延迟加载和自动缓存
条目在您首次调用 get
或 has
方法时进行 延迟加载。
如果您在系统上启用了apcu,DIC会自动将条目缓存在APCU存储中。请注意,缓存中的 id 总是指向init文件的sha1()值。
命令
如果您有一个使用 Symfony Console 的应用程序,您有一些可用的命令
dic:debug
在DIC中输出条目列表。
您可以在您的应用程序中注册这些命令,考虑以下示例
#!/usr/bin/env php <?php set_time_limit(0); ... use Symfony\Component\Yaml\Yaml; // create symfony console app $app = new \Symfony\Component\Console\Application('Simple DIC', 'console tool'); // config $configFile = __DIR__.'/../config/yaml/config.yaml'; // add commands here $app->add(new \Matecat\SimpleDIC\Console\DICDebug($configFile)); $app->run();
支持
如果您发现了问题或有任何想法,请参考 本部分。
作者
- Mauro Cassani - github
许可证
本项目采用MIT许可证 - 有关详细信息,请参阅 LICENSE.md 文件