2013-08-16 40 views
1

我在这里新来的,我希望我的问题不是微不足道。Symfony2 +注入静态类

我在它(网格生成)静态类的封装,并希望在Symfony2中使用它

所以我知道的类加载和服务容器,但我不明白的容器工作。

网格类取决于2其他静态类(一个用于配置和一个用于SQL Query's)

使用类的代码如下:

$Grid = Grid::get_instance(); 
$Grid->table('products'); 
echo $Grid->renderGrid(); 

并在内部该类使用像GridConfig :: database()这样的调用 - 所以我想也许我不能简单地将所有三个类都添加到Service.yml中,但那不起作用。

所以我的问题是:我如何注入静态类的方式,我可以在控制器中使用它? 这是可能的,如果是的话那么最好的实践案例呢?

谢谢你的帮助。

回答

2

由于它是静态的,所以确实没有必要注入它。例如:

$grid = \Grid::get_instance; 

应该工作。如果网格使用名称空间,那么您还需要添加该名称空间。你需要确保自动加载器能够找到它。

当然使用全局变得有点皱眉。你可以做的是编写你自己的服务来充当包装。

class MyGridService 
{ 
    protected $grid; 

    public function getInstance() 
    { 
     if (!$this->grid) $this->grid = \Grid::get_instance(); 
     return $this->grid; 
    } 
} 

添加MyGridService您services.yml文件,然后从控制器,你可以这样做:

$grid = $this->get('my_grid_service')->getInstance(); 
+0

我应该在哪里放置静态类文件? –