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

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

public $test = '';

function __construct() {
    $this->test = md5(uniqid(rand(), true));
}
Другие вопросы по тегам