1

Symfonyフレームワークを使用するプロジェクトがあります。最適化の目的で、リクエスト中に常に使用されている6つの一般的な変数を絞り込みました。この変数のいくつかはデータベース内にあります。

さて、同じ値を取得して、データベースに5回戻るのは悪い習慣です。そこで、それらの変数値をクラスレベルの変数に格納することを考えました。

それは良い習慣ですか?

class MyController extends Controller
{

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

2 に答える 2

2

あなたができることはextends、symfonyのコントローラーとベースコントローラーの間に別のものを作成することです。このような:

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 ;
}

この例は、ログに記録されたユーザーのインスタンスが「キャッシュ」されていることを示しています。それはあなたが正しく必要なものですか?あなたが頻繁に必要とする他のもののために同じ考えを使うことができます。

于 2012-09-10T08:15:05.297 に答える
0

もちろん、それは良い習慣です。唯一の非常にわずかな欠点は、値をクラス変数に割り当ててから再度アクセスするまでの間に、データベース内で値が何らかの形で変更された場合です。しかし、チャンスはかなり少ないです

于 2012-09-08T13:26:26.393 に答える