Symfony欧宝娱乐app下载地址 3.3新增功能:基于PSR-4的服务发现
2017年5月15日·发表的哈维尔Eguiluz
警告:这篇文章是关于一个不受支持的Symfony版本。欧宝娱乐app下载地址有些信息可能已经过时了。阅读最新的Symfony文档欧宝娱乐app下载地址.
欧宝娱乐app下载地址Symfony 3.3将引入许多特性来简化您在应用程序中使用服务的方式,例如简单的配置而且autoconfig.这篇文章解释了依赖注入的最后一个重要特性:基于PSR-4的服务发现和注册.
其思想是在某些给定目录中查找PHP类,如果它们的名称空间符合PSR-4命名语法,则将它们注册为服务。属性配置此特性资源
选项,该选项接受目录路径或Glob表达式来匹配多个目录。例子:
1 2 3 4
服务:App \:资源:. . / src /{控制器,命令}#……
中的PHP文件src /控制器/
而且src /命令/
应用程序的目录,从这些文件和用途推断PSR-4类名class_exist ()
在将这些类注册为Symfony服务之前检查它们是否存在(使用类FQCN作为服务id)。欧宝娱乐app下载地址
这个功能是如此方便以至于欧宝娱乐app下载地址Symfony Flex类中默认使用app.yaml
配置文件,将用于Symfony 4应用程序:欧宝娱乐app下载地址
1 2 3 4 5 6 7 8 9 10 11
服务:#……#这将为每个类创建一个服务,其id为全限定类名App \:资源:“. . / . . / src /{命令,形式,EventSubscriber,树枝,安全}”应用程序控制器\ \:资源:“. . / . . / src /控制器”公众:真正的标签:(“controller.service_arguments”)
如果您的应用程序包含很多目录,您可以使用*
的价值资源
选项,然后使用排除
选项排除一些目录,如果需要:
1 2 3 4 5 6 7 8
服务:#……AppBundle \:#发现所有AppBundle/子目录下的服务…资源:“. . / . . / src / AppBundle / *’#……除非匹配这个Glob表达式排除:“. . / . . / src / AppBundle / {AppBundle.php、实体}’
发表在#生活在边缘
评论
这个特性会出现在Symfony 3的认证问题中吗欧宝娱乐app下载地址?
我认为它将打破使用Alpine Linux的基于docker的结构。因为Alpine不支持GLOB_BRACE,因为它使用的是musl libc而不是GNU libc。
https://bugs.php.net/bug.php?id=72095
http://ftp.grokbase.com/t/php/php-doc-bugs/164rneeqx3/php-bug-bug-72095-new-undefined-constant-glob-brace-while-doc-base-configure-php
https://github.com/zendframework/zend-stdlib/issues/58
https://bugs.php.net/bug.php?id=72095
http://ftp.grokbase.com/t/php/php-doc-bugs/164rneeqx3/php-bug-bug-72095-new-undefined-constant-glob-brace-while-doc-base-configure-php
https://github.com/zendframework/zend-stdlib/issues/58
评论截止。
为了确保评论保持相关性,旧帖子将被关闭。
Javier Eguiluz is a certified Symfony engineer.
Get certified! Online exams available in all countries.
Register Now