zoukankan      html  css  js  c++  java
  • symfony中使用__construct获取services对象

    symfony中服务的使用总所周知的方便,但是当一个controller多次使用到同一个服务的时候就会出现在每个Action中都get获取服务,此时为了省事相信你也尝试使用构造函数申明一个私有对象避免多次使用,如果服务没问题此时使用

    private $conn;
    private $sql;
    public function __construct($container)
    {
        $this->conn = $this->get('database_connection');
        $this->sql = $this->get('services.sql');
    }

    你会得到Error: Call to a member function get() on a non-object
    原因是因为$this->container未设置导致,google找到一个解决思路 在你当前的Bundle的YourBundleNameBundle.php文件中写入以下代码

    private static $containerInstance = null;
     
    public function setContainer(ContainerInterface $container = null)
    {
            parent::setContainer($container);
            self::$containerInstance = $container;
    }
     
     public static function getContainer()
    {
         return self::$containerInstance;
    }

    此时再Controller中使用

    private $conn;
    private $sql;
    public function __construct($container)
    {
        $this->conn = YourBundleNameBundle::getContainer()->get('database_connection');
        $this->sql = YourBundleNameBundle::getContainer()->get('services.sql');
    }

    就能正常get获取到对象了

  • 相关阅读:
    二项式反演
    快速沃尔什变换
    springMVC的form标签
    springMVC的拦截器配置
    RESTful使用方法
    springMVC数据绑定
    使用spring框架自带的字符拦截器
    将idea中的项目上传至github
    springMVC的使用方式
    springMVC的概述
  • 原文地址:https://www.cnblogs.com/init-007/p/13555358.html
Copyright © 2011-2022 走看看