2013-08-16 81 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

我應該在哪裏放置靜態類文件? –