lionsad / service_container
基于CTools插件和Symfony集成的服务容器
Requires
- php: >=5.3.10
This package is auto-updated.
Last update: 2024-09-17 03:39:13 UTC
README
版本
Service Container是一个基于
它的语法与Symfony容器非常相似,但它是从头开始编写的,因为不需要symfony依赖项 - 直接使用了一些Drupal 8核心和组件。它们未来可能会依赖于drupal8core项目 - 但目前代码是可行的。
这允许使用可扩展的服务容器(如Drupal 8中)并在Drupal 7中编写模块,就像它们在使用Drupal 8一样。
主要好处是能够使用单元测试,同时也可以考虑用Drupal 8的编码风格来编写Drupal 7模块。
该模块使用PHP Unit和travis.yml,但测试和composer.json被隔离在tests/目录中,所以默认情况下不需要vendor或composer的多映射。
最初是为render_cache模块编写的,但此后其他人表示有兴趣使用它,因此将其分割出来,并将其作为render_cache的依赖项。
您需要
或任何其他PSR-4自动加载器。
注册CTools插件
默认情况下,service_container支持CTools发现,要注册您的插件,您只需要做以下操作
$parameters['ctools_plugins_auto_discovery']['render_cache'] = TRUE
然后您可以通过以下方式获取插件
$rcc = \Drupal::service('render_cache.controller')->createInstance('block');
因为插件管理器实现了整个发现接口,您可以轻松地获取所有定义。
$plugins = \Drupal::service('render_cache.controller')->getDefinitions();
您的插件本身看起来像
cat modules/render_cache_block/src/RenderCache/Controller/block.inc
$plugin = array( 'class' => "\\Drupal\\render_cache_block\\RenderCache\\Controller\\BlockController", 'arguments' => array('@render_stack', '@render_cache.cache'), );
因此您可以使用正常的容器参数语法。
提供以下服务
- module handler ('module_handler') 和 module installer ('module_installer')
- service container ('service_container')
- database ('database')
- key value store ('keyvalue', 'keyvalue.database')
- variable,variable_get() / variable_set()的包装器
- A lock ('lock')
- A wrapper for url() / l() ('url_generator', 'link_generator')
- Flood,flood机制的包装器
- Messenger,显示消息的包装器
- Drupal 7 Legacy,访问Drupal 7遗留函数的包装器。
- 更多内容即将到来...
测试
- service_container 通过 PHPUnit 进行代码正确性测试。 (运行 ./tests/run-tests.sh)
- service_container 通过 simpletest 与 Drupal 进行集成测试。 (运行 ./tests/run-simpletests.sh)
- service_container 通过 PHPUnit 进行代码覆盖率测试。 (运行 ./tests/run-coverage.sh)
我们修改过的 Drupal 8 核心服务列表
更多详细信息请参阅 HACK.md 文件。