php – symfony2并自动运行服务
发布时间:2020-12-13 22:51:22 所属栏目:PHP教程 来源:网络整理
导读:我决定在symfony2.4中创建一个服务,可以访问我项目中所有范围内的容器. 所以我创建了一个模型: namespace NevecRaxcidoBundleModel;class Base { public static $container; public function __construct() { self::$container = $container; }} 并将此模
我决定在symfony2.4中创建一个服务,可以访问我项目中所有范围内的容器.
所以我创建了一个模型: namespace NevecRaxcidoBundleModel; class Base { public static $container; public function __construct() { self::$container = $container; } } 并将此模型设置为resources / config / services.yml中的服务 parameters: nevec_raxcido.core: NevecRaxcidoBundleModelBase services: nevec_raxcido.example: class: %nevec_raxcido.core% arguments: [@service_container] 现在,你知道我应该在这样的控制器中调用这个服务: $this->get("nevec_raxcido.example"); 但我想自动加载此服务,而无需在控制器中调用上述命令 问题是如何在symfony2内核启动后自动加载服务? 解决方法
我找到了解决方案,似乎我们应该将监听器用于services.yml之类:
parameters: nevec_raxcido.core: NevecRaxcidoBundleModelBase services: nevec_raxcido.example: class: %nevec_raxcido.core% arguments: [@service_container] tags: - {name: kernel.event_listener,event: kernel.request,method: onKernelRequest} 而这个模型: <?php namespace NevecRaxcidoBundleModel; class Base{ public static $container; public function __construct($container) { self::$container = $container; } public function onKernelRequest($event){ return; } } 因此,您可以使用以下方法访问应用程序的所有范围内的容器: $container = ModelBase::$container; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |