假设您显示每页请求的随机语句,并使用函数返回一个随机对象,如:
Statement::get()->sort("RAND()")->limit("1");
但是现在在模板中你想在不同的地方引用它两次,但它应该是相同的语句而不是随机不同的语句。您如何确保每页请求获得相同的随机对象?
答案 0 :(得分:4)
使用记住对象的静态变量定义函数怎么样?
public function rndObj() {
static $obj = null;
if(!isset($obj)){
$obj = Statement::get()->sort("RAND()")->limit("1")->first();
}
return $obj;
}
然后在模板中使用rndObj
。
答案 1 :(得分:1)
执行此操作的一种方法是在控制器init
函数中获取随机语句,并将其分配给私有变量。我们添加一个getRandomStatement函数来获取随机语句:
class Page_Controller extends ContentController {
private $randomStatement;
public function init() {
parent::init();
$this->randomStatement = Statement::get()->sort('RAND()')->limit(1)->first();
}
public function getRandomStatement() {
return $this->randomStatement;
}
}