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

  • 相关阅读:
    课件的引子
    用nc做网络压力测试
    分布式计算学习笔记
    静态库 .a 转成共享库 .so
    nmon用法
    eclipse debug URLClassPath.getLoader(int) file
    sodu 命令场景分析
    俩孩随笔
    深度学习丨深度学习中GPU和显存分析
    语义分割丨DeepLab系列总结「v1、v2、v3、v3+」
  • 原文地址:https://www.cnblogs.com/init-007/p/13555358.html
Copyright © 2011-2022 走看看