/
v.bolshakov
/
AIEcosystem-Testing
Обзор
Документация
Войти
/
v.bolshakov
/
AIEcosystem-Testing
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
dev
common/kdf/KType.php
190 строк
5 KB
Developer
Initial commit
03 авг 2026, 17:43
03 авг 2026, 17:43
7433917
Код
Авторство
О чём код?
<?php namespace common\kdf; use common\kdf\base\BaseKdf; use common\helpers\DateHelper; use common\helpers\NumHelper; use Yii; use yii\base\BaseObject; use yii\base\InvalidConfigException; use yii\helpers\VarDumper; use yii\helpers\ArrayHelper; /** * Классификатор - тип данных * * @property string $title Название * @property string $type Код * * @author Dmitry E. Semenov <sde.tomsk@gmail.com> * @copyright Self (c) 2020 */ class KType extends BaseKdf { const TBOOLEAN = 1; const TINTEGER = 2; const TDOUBLE = 3; const TSTRING = 4; const TDATE = 5; const TARRAY = 6; const TDATETIME = 7; /** * {@inheritdoc} */ public static function tableName() { return 'k_type'; } /** * {@inheritdoc} */ public function rules() { return ArrayHelper::merge(parent::rules(), [ [['title', 'type'], 'required'], [['title', 'type'], 'string', 'max' => 50], [['type'], 'unique'], ]); } /** * {@inheritdoc} */ public function attributeLabels() { return ArrayHelper::merge(parent::attributeLabels(), [ 'title' => Yii::t('app', 'Title'), 'type' => Yii::t('app', 'Type'), ]); } /** * Экспортируем поле * * @param int $id Тип поля * @param mixed $value Значение * @param bool $as_string Преобразовать к строке или оставить как есть * @return array|bool|mixed|string|Object|null */ public static function toExport($id, $value, $as_string = false) { $result = null; switch ($id) { case self::TSTRING: $result = (string)$value; break; case self::TDOUBLE: $result = NumHelper::toNum($value); break; case self::TDATE: $result = DateHelper::toArray($value, ['day', 'month', 'year']); break; case self::TINTEGER: $result = (int)$value; break; case self::TARRAY: if ($array = @unserialize($value)) { $result = $array; } else { $result = []; } break; } if ($as_string) { return VarDumper::export($result); } else { return $result; } } /** * Проверить является ли параметр и значение по умолчанию идентичным * * @param integer $tip_id Тип поля * @param mixed $a Проверяемое значение * @param mixed $b Проверяемое значение * @return bool */ public static function isEqual($tip_id, $a, $b) { switch ($tip_id) { case self::TBOOLEAN: return (bool)$a === (bool)$b; case self::TINTEGER: return (int)$a === (int)$b; } return false; } /** * Преобразовать поле * * @param integer $tip_id Тип поля * @param mixed $value Значение * @param mixed $default_value Значение по умолчанию * @return int|string|null * @throws InvalidConfigException */ public static function toValue($tip_id, $value, $default_value = null) { if (!isset($value)) { $value = $default_value; } switch ($tip_id) { case self::TDATE: if ($value == 'sysdate') { return DateHelper::date(); } else { return DateHelper::date(DateHelper::parse($value)); } case self::TDATETIME: if ($value == 'sysdate') { return DateHelper::now(); } else { return DateHelper::now(DateHelper::parse($value, true)); } case self::TINTEGER: return (int)$value; case self::TDOUBLE: return (float)$value; case self::TBOOLEAN: return (boolean)$value; default: return $value; } } /** * Валидатор на указанный тип данных * * @param int $id Идентификатор типа * @return string */ public static function toValidator($id) { switch ($id) { case self::TSTRING: return 'string'; case self::TDOUBLE: return 'number'; case self::TDATE: return 'date'; case self::TDATETIME: return 'datetime'; case self::TINTEGER: return 'integer'; case self::TBOOLEAN: return 'boolean'; default: return 'safe'; } } }