Symfonyob娱乐下载 3.4中的新功能:服务和路由的基于php的配置
警告:这篇文章是关于一个不受支持的Symfony版本。ob娱乐下载有些信息可能已经过时了。阅读最新的Symfony文档ob娱乐下载.
提供的
尼古拉斯Grekas
在# 23834
而且# 24180.
ob娱乐下载Symfony支持多种开箱即用的配置格式:XML、YAML、PHP和PHP注释。最好的一点是,我们不强迫你使用任何特定的格式。在决定使用的格式时,您总是负责的,您甚至可以混合使用它们(例如,YAML用于基本配置,XML用于服务,PHP注释用于路由)。
默认情况下,我们在一些主要配置文件中使用YAML (services.yml
,security.yml
,config.yml
),因为它在可读性、简洁性和特色之间取得了很好的平衡。然而,这需要有Yaml组件作为Symfony应用程序的依赖项。ob娱乐下载
ob娱乐下载Symfony 4将最大限度地减少应用程序所需的依赖关系(一个新的Symfony 4应用程序包含的代码比Symfony 3.3应用程序少70%),因此消除Yaml依赖关系是我们的中期优先事项。我们现在可以切换到现有的PHP配置格式,但它不够简洁易读。
这就是为什么在Symfonyob娱乐下载 3.4中我们引入了一个新的基于php的配置格式定义路由和服务。这是它在配置路由时的样子:
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
/ / app / config / routing.php返回函数(RoutingConfigurator$路线){//导入单独文件中定义的路由$路线->导入(“legacy_routes.php”)->前缀(/遗留的);//使用“流畅接口”定义路由$路线->add (“产品”,“/产品/ {id}”)->控制器(“App \控制器\ ProductController:显示”)->计划([“https”])->需求([“id”= >“\ d +”])->违约([“id”= >0])->add (“主页”,' / ')->控制器(“应用程序控制器\ \ DefaultController:指数”);};
类似地,定义服务的文件应该是这样的:
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
/ / app / config / services.php返回函数(ContainerConfigurator$容器){$容器->导入(“legacy_services.php”);$参数个数=$容器->参数();$参数个数->集(“app.foo_param”,“param_value”);$容器=$容器->服务()->默认值()->私人()->可以使用autoconfigure ()->自动装配();$容器->负载(“应用\ \”,“. . / src / *”)->排除(“. . / src /{实体、库、测试}');$容器->负载(“应用程序控制器\ \ \ \”,“. . / src /控制器”)->标记(“controller.service_arguments”);$容器->集(FooClass::类)->args ([“some_argument”裁判(BarClass::类))->标记(“kernel.event_listener”, (“事件”= >“kernel.exception”]);$容器->别名(“foo”, FooClass::类)->公共();};
在未来的Symfony 4应用程序中,我们可能会默认使用这种配置格式,但我们暂时将坚持使用YAML。ob娱乐下载与此同时,你可以在你的应用程序中测试这种新格式,并给我们反馈。
更新:在这篇博客文章的第一个版本中,暗示这种新格式将取代Symfony 4.0版本中的YAML。ob娱乐下载这是错误的。相反,这种新格式可以(也不能)在未来的Symfony版本中取代YAML作为默认格式。ob娱乐下载
评论
评论截止。
为了确保评论保持相关性,旧帖子将被关闭。
我真的不是PHP配置的大粉丝,但我们仍然有选择。: -)
Fabien Potencier is a certified Symfony engineer.
Get certified! Online exams available in all countries.
Register Now