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获取到对象了

  • 相关阅读:
    文章标题
    PAT Basic Level 1006
    PAT Basic Level 1005
    PAT Basic Level 1004
    PAT Basic Level 1036
    PAT Basic Level 1002
    (算法)递归各习题总结反思 *基础
    uvaoj 101
    C语言(关于二级指针)
    普通算法(高效幂运算)
  • 原文地址:https://www.cnblogs.com/init-007/p/13555358.html
Copyright © 2011-2022 走看看