Реализованы формы для шагов смены E-mail адреса, покрыты unit-тестами

У EmailActivation добавлено поле $_data и дописано поведение для работы с ним
Упрощено подключение фикстур для EmailActivations
This commit is contained in:
ErickSkrauch
2016-05-16 01:33:19 +03:00
parent e2e31c3720
commit 50439fdaeb
27 changed files with 818 additions and 42 deletions

View File

@@ -0,0 +1,47 @@
<?php
namespace common\behaviors;
use yii\base\Behavior;
use yii\helpers\ArrayHelper;
class DataBehavior extends Behavior {
/**
* @var string имя атрибута, к которому будет применяться поведение
*/
public $attribute = '_data';
/**
* @param string $key
* @param mixed $value
*/
protected function setKey(string $key, $value) {
$data = $this->getData();
$data[$key] = $value;
$this->owner->{$this->attribute} = serialize($data);
}
/**
* @param string $key
* @return mixed
*/
protected function getKey(string $key) {
return ArrayHelper::getValue($this->getData(), $key);
}
/**
* @return array
* @throws \yii\base\ErrorException Yii2 подхватит Notice от неправильной десериализаци и превратит его
* в свой Exception, благодаря чему программа сможем продолжить нормально работать (вернее ловить Exception)
*/
private function getData() {
$data = $this->owner->{$this->attribute};
if (is_string($data)) {
$data = unserialize($data);
} else {
$data = [];
}
return $data;
}
}