mirror of
				https://github.com/elyby/accounts.git
				synced 2025-05-31 14:11:46 +05:30 
			
		
		
		
	У EmailActivation добавлено поле $_data и дописано поведение для работы с ним Упрощено подключение фикстур для EmailActivations
		
			
				
	
	
		
			48 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?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;
 | 
						||
    }
 | 
						||
 | 
						||
}
 |