我需要在模型中创建一个新属性,并且发生一些奇怪的事情:
此代码,工作正常:
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();
感谢您的支持!
答案 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;
}