/
v.bolshakov
/
AIEcosystem-Testing
Обзор
Документация
Войти
/
v.bolshakov
/
AIEcosystem-Testing
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
dev
common/components/base/BaseGenerator.php
115 строк
3 KB
Developer
Initial commit
03 авг 2026, 17:43
03 авг 2026, 17:43
7433917
Код
Авторство
О чём код?
<?php namespace common\components\base; use common\helpers\ArrayHelper; use yii\base\Component; use yii\base\InvalidCallException; use yii\helpers\Console; use Yii; use yii\validators\RequiredValidator; /** * Базовый класс для генерации данных * * @author Dmitry E. Semenov <sde.tomsk@gmail.com> * @copyright Self (c) 2020 */ abstract class BaseGenerator extends Component { /** * Параметры которые передаются в компонент генератор * @var array */ protected $params = []; /** * Установить паметры для генерации * @param mixed $params Абстрактный параметр метода * @return $this */ public function params($params) { $this->params = $params; return $this; } /** * Получить один параметр * @param string $param_name Имя параметра */ public function getParam($param_name, $throw = false) { $result = ArrayHelper::getValue($this->params, $param_name); if ($throw) { $validator = new RequiredValidator(); $not_empty = $validator->validate($result); if (!$not_empty) { throw new InvalidCallException(Yii::t('app', 'Parameter «{0}» is required', [ $param_name ])); } } return $result; } /** * Данный метод будет вызван перед началом генерации данных * @return bool */ protected function beforeGenerate() { return true; } /** * Данный метод будет вызван после генерации данных * * @param bool $result данные были успешно сгенерированы или нет */ protected function afterGenerate($result) { } /** * Выполнение запроса на обработку * @return bool|mixed */ public function execute() { if ($this->beforeGenerate()) { $result = $this->generate(); $this->afterGenerate($result); return $result; } else { return false; } } /** * Сгенерировать данные */ abstract protected function generate(); /** * Вывод сообщения * @param $message */ protected function log($message) { if (PHP_SAPI == 'cli') { Console::stdout($message . " ..." . PHP_EOL); } else { Yii::info($message, 'generate'); } } }