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 回答