Php 在Symfony控制器类中使用类级变量可以吗?

Php 在Symfony控制器类中使用类级变量可以吗?,php,model-view-controller,symfony,frameworks,Php,Model View Controller,Symfony,Frameworks,我有一个使用Symfony框架的项目。出于优化目的,我缩小了6个常见变量的范围,这些变量在请求期间经常使用。其中一些变量位于数据库内部 现在,一次又一次地返回数据库5次,得到相同的值是不好的做法。所以,我考虑将这些变量值存储到类级变量中 这是一个好的练习吗 class MyController extends Controller { /*Class level variables to eliminate repetitive object creation.*/ prote

我有一个使用Symfony框架的项目。出于优化目的,我缩小了6个常见变量的范围,这些变量在请求期间经常使用。其中一些变量位于数据库内部

现在,一次又一次地返回数据库5次,得到相同的值是不好的做法。所以,我考虑将这些变量值存储到类级变量中

这是一个好的练习吗

class MyController extends Controller
{

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

当然,这是一个很好的做法。唯一一个非常轻微的缺点是,如果数据库中的值从您将其分配给类变量到您再次访问它时以某种方式发生变化。但是机会非常渺茫

您可以做的是在您的控制器和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 ;
}

此示例显示已登录用户的实例已“缓存”;这就是你需要的,对吗?您可以将同样的想法用于您经常需要的其他事情。

这不是“类级别变量”(也称为静态变量)。它是一个实例变量。您希望在何处/如何共享这些变量?