SilverStripe的每页请求随机对象

mun*_*ono 6 php silverstripe

假设您显示每页请求的随机语句并使用函数返回一个随机对象,如:

Statement::get()->sort("RAND()")->limit("1");
Run Code Online (Sandbox Code Playgroud)

但是现在在模板中你想在不同的地方引用它两次但它应该是相同的语句而不是随机不同的语句.您如何确保每页请求获得相同的随机对象?

Ter*_* D. 4

使用记住该对象的静态变量定义一个函数怎么样?

public function rndObj() {
   static $obj = null;
   if(!isset($obj)){
      $obj = Statement::get()->sort("RAND()")->limit("1")->first();
   }
   return $obj;
}
Run Code Online (Sandbox Code Playgroud)

然后rndObj在模板中使用。