6

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

Statement::get()->sort("RAND()")->limit("1");

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

4

2 回答 2

4

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

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

然后rndObj在模板中使用。

于 2013-04-03T20:57:58.440 回答
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;
    }
}
于 2016-07-14T23:53:04.583 回答