2012-09-08 77 views
1

我有一個使用Symfony框架的項目。爲了優化目的,我已經縮小了在請求期間一直使用的6個公共變量。其中一些變量在數據庫中。可以在Symfony控制器類中使用類級變量嗎?

現在,一次又一次地返回數據庫5次,得到相同的值是不好的做法。所以,我想將這些變量值存儲到類級變量中。

這是一個很好的做法嗎?

class MyController extends Controller 
{ 

    /*Class level variables to eliminate repetitive object creation.*/ 
    protected $doctrine; 
+1

這不是一個「類級別變量」(又名靜態變量)。這是一個實例變量。 – igorw

+0

您想在哪裏/如何分享這些變量? –

回答

2

你可以做的是在你的控制器和symfony的基本控制器之間創建另一個extends。就像這樣:

class YourController extends ApplicationController 

class ApplicationController extends Controller 

和ApplicationController中可以有方法是這樣的:

/** 
* @var User 
*/ 
protected $loggedUser = false ; 
protected function getLoggedUserOrNull() 
{ 
    if ($this->loggedUser === false) 
     $this->loggedUser = $this->get("security.context")->getToken()->getUser() ; 
    return $this->loggedUser ; 
} 

這個例子說明,記錄用戶的實例被「緩存」;那是你需要的權利?你可以對經常需要的其他東西使用相同的想法。

0

當然這是一個很好的做法。唯一很小的缺點是,如果數據庫中的值從分配給類變量的時間到您再次訪問它時發生了某種變化。但機會相當渺茫

相關問題