Yii在模型中创建一个新属性并不起作用

时间:2014-10-19 10:27:02

标签: php yii cactiverecord

我需要在模型中创建一个新属性,并且发生一些奇怪的事情:

此代码,工作正常:

class Person extends CActiveRecord {

   public $test = "xxx";

   public function getRandomToken() {
      $temp = $this->test;
      return $temp;
   }

此代码不会:

class Person extends CActiveRecord {

   public $test = md5(uniqid(rand(), true));

   public function getRandomToken() {
      $temp = $this->test;
      return $temp;
   }

为什么呢? 我得到一个带有第二个代码的空白页面,没有错误。

我需要使用创建视图页面中的随机令牌,我就是这样做的:

echo $model->getRandomToken();

感谢您的支持!

2 个答案:

答案 0 :(得分:5)

您无法将函数结果指定为值。它必须是一个常数。在构造函数

中分配函数值
public $test = '';

function __construct() {
    $this->test = md5(uniqid(rand(), true));
}

答案 1 :(得分:0)

如果您不想覆盖构造函数,可以使用它:

class Person extends CActiveRecord {

   public $test = null;

   public function getRandomToken() {
      if ($this->test == null){
        $this->test = md5(uniqid(rand(), true));
      }
      $temp = $this->test;
      return $temp;
   }