新在Symfo欧宝娱乐app下载地址ny 4.1:自动装配的改进
2018年3月27日,·发表的哈维尔Eguiluz
警告:这篇文章是关于一个不受支持的Symfony的版本。欧宝娱乐app下载地址其中一些信息可能是过时了。阅读最近的Symfony文档欧宝娱乐app下载地址。
允许绑定标量值控制器
当使用服务自动装配,_defaults.bind
选择允许通过名称或类型绑定参数。例如,您可以定义的值美元管理扫描
一旦应用程序和每个服务使用一个构造函数参数名称将使用它的价值:
1 2 3 4 5
#配置/ services.yaml服务:_defaults:绑定:美元管理扫描:“% kernel.project_dir %”
但是,如果一些定义了一个控制器动作美元管理扫描
该配置参数,并不适用于它,论点并非autowired的:
1 2 3 4 5 6 7
/ * * *@Route(“/做某事”)* /公共函数somethingAction(美元管理扫描){/ /美元的观点没有得到管理扫描配置的值}
在控制器中,您需要使用$ this - > getParameter (“kernel.project_dir”)
通过控制器的快捷方式或通过价值__construct ()
方法。这种行为没有提供一个一致的经验(服务构造函数绑定行为不同于控制器动作绑定),这是最后一个粗糙的边缘自动装配。
这就是为什么在Symfony欧宝娱乐app下载地址 4.1将标量值绑定到控制器参数。像往常一样在定义绑定_defaults.bind
然后添加控制器的参数操作(没有需要定义一个构造函数方法)。
服务装饰自动装配
装饰服务允许改变服务的行为,而不影响其他使用原来的服务。装修时服务,配置需要通过装饰服务作为参数使用一个特殊的命名语法:
1 2 3 4 5 6 7 8 9 10 11
#配置/ services.yaml服务:#这是服务你想装修App \梅勒:~App \ DecoratingMailer:装饰:App \梅勒#你必须通过原始服务作为参数,和它的名字#:“装修服务ID”+“。”参数:(“@App \ DecoratingMailer.inner”)
虽然明确,这配置看起来像一个内部Symfony的细节。欧宝娱乐app下载地址这就是为什么在Symfony欧宝娱乐app下载地址 4.1内部服务自动autowired的如果可能的话。这是与之前相同的新配置的例子:
1 2 3 4 5 6
#配置/ services.yaml服务:App \梅勒:~App \ DecoratingMailer:装饰:App \梅勒
装饰服务的自动配置完成时满足下列条件:
- 装修服务autowired的;
- 装修服务只有一个参数的构造函数类型的装饰服务。
发表在#生活在边缘
评论
“我认为这个系统传播不好的实践和不确定性无处不在。”
同样的对我来说:/
同样的对我来说:/
嘿,伙计们!
我很欣赏评论控制器DI:)。事情是这样的,我们真的想让控制器作为服务* *每个人都可以使用的东西,这是一个顽固的伟大一步。这个技巧——如果课程完全是可选——帮助我们工作。控制器作为服务的问题,唯一的问题是,很多人——特别是当刚刚开始,通过构造函数使用DI的要求很麻烦。进入障碍的action-injection有助于降低,同时仍然允许他们使用控制器作为服务。
像几乎所有的,这些类型的特性使我们能够降低门槛,但是希望也给人们一个光滑的选项来更新他们的代码后,如果/当他们选择更喜欢构造函数注入。就我个人而言,我使用行动注入无处不在,爱它。但是,这就是为什么Symfony欧宝娱乐app下载地址很棒——你可以选择这个快捷方式,和成长的当你学习更多关于选择:)。
干杯!
我很欣赏评论控制器DI:)。事情是这样的,我们真的想让控制器作为服务* *每个人都可以使用的东西,这是一个顽固的伟大一步。这个技巧——如果课程完全是可选——帮助我们工作。控制器作为服务的问题,唯一的问题是,很多人——特别是当刚刚开始,通过构造函数使用DI的要求很麻烦。进入障碍的action-injection有助于降低,同时仍然允许他们使用控制器作为服务。
像几乎所有的,这些类型的特性使我们能够降低门槛,但是希望也给人们一个光滑的选项来更新他们的代码后,如果/当他们选择更喜欢构造函数注入。就我个人而言,我使用行动注入无处不在,爱它。但是,这就是为什么Symfony欧宝娱乐app下载地址很棒——你可以选择这个快捷方式,和成长的当你学习更多关于选择:)。
干杯!
Alex Rock is a certified Symfony engineer.
Get certified! Online exams available in all countries.
Register Now当你需要用户,如果你只有一个用户在“记忆”提供者注册,每次联系,即使用户没有进行身份验证。
绑定可以覆盖路由参数(或相反),因为一切都在$请求- >属性中可以注入控制器。
我认为这个系统传播不好的实践和不确定性。
DI是依赖。与路由路线行动是紧密耦合的。一个控制器构造函数必须加上DI。