matecat/simple-dic

简单DIC客户端

v1.1.10 2019-09-05 13:12 UTC

README

Codacy Badge license Packagist Scrutinizer Code Quality

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 如果条目不存在。

延迟加载和自动缓存

条目在您首次调用 gethas 方法时进行 延迟加载

如果您在系统上启用了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();

支持

如果您发现了问题或有任何想法,请参考 本部分

作者

许可证

本项目采用MIT许可证 - 有关详细信息,请参阅 LICENSE.md 文件