加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读