Yii создать новый атрибут в модели не работает

Мне нужно создать новый атрибут в модели, и происходит нечто странное:

этот код работает нормально:

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;
}

Зачем?
Я получаю пустую страницу со вторым кодом, без ошибок.

Мне нужно будет использовать случайный токен из create view-page, и я делаю это следующим образом:

echo $model->getRandomToken();

Спасибо за поддержку!

2

Решение

Если вы не хотите перезаписывать конструктор, вы можете использовать это:

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;
}
0

Другие решения

Вы не можете назначить результат функции как значение. Это должна быть константа. Назначьте значение функции в конструкторе

public $test = '';

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