2012-09-08 51 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

当然这是一个很好的做法。唯一很小的缺点是,如果数据库中的值从分配给类变量的时间到您再次访问它时发生了某种变化。但机会相当渺茫

相关问题