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

MeV*_*MeV 2 php yii cactiverecord

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

这段代码,工作正常:

class Person extends CActiveRecord {

   public $test = "xxx";

   public function getRandomToken() {
      $temp = $this->test;
      return $temp;
   }
Run Code Online (Sandbox Code Playgroud)

这段代码不会:

class Person extends CActiveRecord {

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

   public function getRandomToken() {
      $temp = $this->test;
      return $temp;
   }
Run Code Online (Sandbox Code Playgroud)

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

我需要使用create view-page中的随机令牌,我这样做:

echo $model->getRandomToken();
Run Code Online (Sandbox Code Playgroud)

感谢您的支持!

Bar*_*rry 5

您不能将函数结果指定为值.它必须是一个常数.在构造函数中分配函数值

public $test = '';

function __construct() {
    $this->test = md5(uniqid(rand(), true));
}
Run Code Online (Sandbox Code Playgroud)

  • 请注意,在覆盖构造函数时,必须确保将所有必需参数传递给父类(如果有).上面的例子只有在您的父类不接受任何参数时才有效. (2认同)