chippyash / slim-symfony-dic
Slim 框架 3 的 Symfony 2 DIC 集成
Requires
- php: ~5.6||~7.1
- chippyash/assembly-builder: >=2,<3
- chippyash/strong-type: >=5,<6
- slim/slim: >=3,<4
- symfony/config: ~2.8.34||~4.0.4
- symfony/dependency-injection: ~2.8.34||~4.0.4
- symfony/expression-language: ~2.8.34||~4.0.4
- symfony/yaml: ~2.8.34||~4.0.4
Requires (Dev)
- mikey179/vfsstream: >=1.6.0,<2
- phpunit/phpunit: >=4.8.21,<5||~7.0.0
README
质量保证
以上徽章代表当前的开发分支。一般来说,除非测试、覆盖率和使用性都符合要求,否则我不会向 GitHub 推送代码。在假期或需要为其他下游项目编写代码等短时期内,这可能不成立。如果您需要稳定的代码,请使用带标签的版本。请阅读 '安装'。
请参阅测试和测试合同以获取更多信息。
请注意,该库的 PHP5.5 开发者支持在 3.0.0 版本中已取消。如果您需要 PHP 5.5 的支持,请使用版本 >=2,<3
。
是什么?
为 Symfony 依赖注入容器 V2 或 Symfony 依赖注入容器 V4 提供了一个 Slim 应用程序 V3。DI 容器取决于您所使用的 PHP 版本。< 7,则为 V2,>=7.1 则为 V4。
为什么?
Slim 框架非常适合轻量级网站,在 V3 版本中采用了依赖注入容器的互操作接口。Slim V3 默认使用 Pimple DI。Symfony DI 还不支持互操作接口的定义。
这个小库支持将易于使用但功能强大的 Symfony DI 容器与轻量级的 Slim 框架集成,让您能够快速创建出色的、可维护的且可配置的网站。
构建器支持 XML DI 定义。XML 是 Symfony DI 配置中最强大和最完整的形式。构建器还支持 Yaml DI 定义。许多开发者更喜欢将参数放入 Yaml 文件中,将服务定义放入 XML 文件中。提供的最小示例文件展示了这种用法。
如何?
使用 Symfony DIC 创建并返回一个 Slim\App 对象
use Chippyash\Type\String\StringType; use Slimdic\Dic\Builder; use Slim\App; $xmlDiFileLocation = '/mysite/cfg/dic.production.xml'; /** * @var Slim\App */ $app = new App(Builder::buildDic(new StringType($xmlDiFileLocation)));
请参阅 examples/dic.slim.v2.xml、examples/dic.slim.v3.xml 和 examples/dic.slim.yml 文件,以了解构建支持 Slim 的 DIC 的最小需求。建议您将文件与您的其他 DI 配置文件一起放置,并在主配置中使用 <imports>
指令将其包含在内。
您可以通过利用预编译和后编译函数来添加到编译过程。这通常对于设置合成服务或在 DI 容器中初始化参数很有用。
注册预编译函数
预编译函数在容器编译之前被调用。
use Slimdic\Dic\ServiceContainer; use Symfony\Component\DependencyInjection\Definition; Builder::registerPreCompileFunction(function($dic) { //set a parameter $dic->setParameter('foo', 'bar'); //set up a synthetic $dic->setDefinition('bar', (new Definition())->setSynthetic(true)); }); $app = new App(Builder::buildDic(new StringType($xmlDiFileLocation)));
注册后编译函数
后编译函数在编译容器之后被调用。
后编译函数仅真正适用于设置合成定义,因为编译完成后,DI 容器中的其余部分将冻结且无法更改。
use Slimdic\Dic\ServiceContainer; Builder::registerPreCompileFunction(function($dic) { $dic->setDefinition('foo', (new Definition())->setSynthetic(true)); }); Builder::registerPostCompileFunction(function($dic, $stage) { $dic->set('foo', $myFooService); });
更改库
- 将其分叉
- 编写测试
- 修改它
- 发起拉取请求
发现了一个您无法解决的错误?
- 将其分叉
- 编写测试
- 发起拉取请求
或提交问题票据
注意。在发起拉取请求之前,请确保您已经将代码重置为 HEAD。
在哪里?
库托管在Github上。可在Packagist.org找到
查看更多包,请访问ZF4 Packages
关于编码和咖喱的杂谈,请访问我的博客My blog
安装
安装Composer
生产环境
"chippyash/slim-symfony-dic": ">=3,<4"
在 composer.json 的 "requires" 部分添加
开发环境
克隆此仓库,然后在本地仓库根目录下运行 Composer 以拉取依赖
git clone git@github.com:chippyash/Slim-Symfony-Dic.git Slimdic cd Slimdic composer install --dev
运行测试
cd Slimdic vendor/bin/phpunit -c test/phpunit.xml test/
许可证
本软件库遵循BSD 3 Clause license
版权所有 © 2016-2018,Ashley Kitson,英国
历史
V1.0.0 初始发布
V1.1.0 更新依赖项
V1.1.1 添加到包的链接
V1.1.2 验证 PHP 7 兼容性
V1.1.3 更新 Slim 依赖到 3.*
V1.1.4 更新依赖项
V1.1.5 更新构建脚本
V2.0.0 取消对 PHP 7.0 的支持,更新为使用 7.1,主要原因是底层库不支持 7.0
V2.0.2 修复单元测试以在 PHP 7.1 下运行
V3.0.0 BC 断裂。取消对 PHP <5.6 的支持
V3.1.0 许可证从 GPL V3 更改为 BSD 3 Clause
V3.1.1 依赖更新