From 8278d62c10808d255cbf689331fd0dc47c314d40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=91=E6=9E=97?= Date: Sun, 8 Oct 2023 22:16:32 +0800 Subject: [PATCH] eee --- GiiController.php | 736 ++++++++++++++++++++++++---------------------- 1 file changed, 384 insertions(+), 352 deletions(-) diff --git a/GiiController.php b/GiiController.php index 8632681..9088a95 100644 --- a/GiiController.php +++ b/GiiController.php @@ -15,78 +15,80 @@ use ReflectionException; class GiiController extends GiiBase { - public string $className = ''; + public string $className = ''; - public array $fields = []; + public array $fields = []; - /** - * GiiController constructor. - * @param $className - * @param $fields - */ - public function __construct($className, $fields, $tableName) - { - $this->className = $className; - $this->fields = $fields; - $this->tableName = $tableName; - } + /** + * GiiController constructor. + * @param $className + * @param $fields + */ + public function __construct($className, $fields, $tableName) + { + $this->className = $className; + $this->fields = $fields; + $this->tableName = $tableName; + } - /** - * @return string|bool - * @throws ReflectionException - * @throws Exception - */ - public function generate(): string|bool - { - $path = $this->getControllerPath(); - $modelPath = $this->getModelPath(); + /** + * @return string|bool + * @throws ReflectionException + * @throws Exception + */ + public function generate(): string|bool + { + $path = $this->getControllerPath(); + $modelPath = $this->getModelPath(); - $managerName = $this->className; + $managerName = $this->className; - $namespace = rtrim($path['namespace'], '\\'); - $model_namespace = rtrim($modelPath['namespace'], '\\'); + $namespace = rtrim($path['namespace'], '\\'); + $model_namespace = rtrim($modelPath['namespace'], '\\'); - $class = ''; - $controller = str_replace('\\\\', '\\', "$namespace\\{$managerName}Controller"); + $class = ''; + $controller = str_replace('\\\\', '\\', "$namespace\\{$managerName}Controller"); - $html = "getImports($path['path'] . '/' . $managerName . 'Controller.php', $class); - } catch (\Throwable $Exception) { - error($Exception); - exit(); - } - } else { - $import = "use Exception; + $import = $this->getImports($path['path'] . '/' . $managerName . 'Controller.php', $class); + } catch (\Throwable $Exception) { + error($Exception); + exit(); + } + } else { + $import = "use Exception; +use Kiri\Router\Annotate\Post; +use Kiri\Router\Annotate\Get; use Kiri\Core\Str; -use Kiri\Core\Json; use Kiri\Router\Base\Controller; +use Kiri\Core\Json; use {$model_namespace}\\{$managerName}; use Kiri\Router\Validator\Validator; use Psr\Http\Message\ResponseInterface; "; - } - if (!empty($import)) { - $html .= $import; - } + } + if (!empty($import)) { + $html .= $import; + } - $controllerName = $managerName; + $controllerName = $managerName; - $historyModel = "use {$model_namespace}\\{$managerName};"; - if (!str_contains($html, $historyModel)) { - $html .= $historyModel; - } + $historyModel = "use {$model_namespace}\\{$managerName};"; + if (!str_contains($html, $historyModel)) { + $html .= $historyModel; + } - $html .= " + $html .= " /** * Class {$controllerName}Controller @@ -99,115 +101,117 @@ class {$controllerName}Controller extends Controller "; - $funcNames = []; - if (is_object($class)) { - $html .= $this->getClassProperty($class); - $html .= $this->getClassMethods($class); - } + $funcNames = []; + if (is_object($class)) { + $html .= $this->getClassProperty($class); + $html .= $this->getClassMethods($class); + } - $default = ['actionAdd', 'actionUpdate', 'actionAuditing', 'actionBatchAuditing', 'actionDetail', 'actionDelete', 'actionBatchDelete', 'actionList']; + $default = ['actionAdd', 'actionUpdate', 'actionAuditing', 'actionBatchAuditing', 'actionDetail', 'actionDelete', 'actionBatchDelete', 'actionList']; + $tableName = str_replace($this->db->tablePrefix, '', $this->tableName); + $tableName = str_replace('_', '-', $tableName); - foreach ($default as $key => $val) { - if (str_contains($html, ' function ' . $val . '(')) { - continue; - } - $html .= $this->{'controllerMethod' . str_replace('action', '', $val)}($this->fields, $managerName, $managerName, $path) . "\n"; - } + foreach ($default as $key => $val) { + if (str_contains($html, ' function ' . $val . '(')) { + continue; + } + $html .= $this->{'controllerMethod' . str_replace('action', '', $val)}($this->fields, $managerName, $managerName, $path, $tableName) . "\n"; + } - $html .= ' + $html .= ' }'; - $file = APP_PATH . 'routes/' . $this->input->getOption('database') . '.php'; - if (!file_exists($file)) { - touch($file); - file_put_contents($file, 'input->getOption('database') . '.php'; +// if (!file_exists($file)) { +// touch($file); +// file_put_contents($file, ' \'' . $tableName . '\',\'namespace\' => \'' . $namespace . '\'], function () { +// Router::post(\'add\', \'' . $controllerName . 'Controller@actionAdd\'); +// Router::get(\'list\', \'' . $controllerName . 'Controller@actionList\'); +// Router::post(\'update\', \'' . $controllerName . 'Controller@actionUpdate\'); +// Router::post(\'auditing\', \'' . $controllerName . 'Controller@actionAuditing\'); +// Router::post(\'batch-auditing\', \'' . $controllerName . 'Controller@actionBatchAuditing\'); +// Router::post(\'batch-delete\', \'' . $controllerName . 'Controller@actionBatchDelete\'); +// Router::post(\'delete\', \'' . $controllerName . 'Controller@actionDelete\'); +// Router::get(\'detail\', \'' . $controllerName . 'Controller@actionDetail\'); +//}); +//'; +// if (!str_contains($this->clearBlank(file_get_contents($file)), $this->clearBlank($addRouter))) { +// file_put_contents($file, $addRouter, FILE_APPEND); +// } - $tableName = str_replace($this->db->tablePrefix, '', $this->tableName); - $tableName = str_replace('_', '-', $tableName); + $file = $path['path'] . '/' . $controllerName . 'Controller.php'; + if (file_exists($file)) { + unlink($file); + } - $addRouter = 'Router::group([\'prefix\' => \'' . $tableName . '\',\'namespace\' => \'' . $namespace . '\'], function () { - Router::post(\'add\', \'' . $controllerName . 'Controller@actionAdd\'); - Router::get(\'list\', \'' . $controllerName . 'Controller@actionList\'); - Router::post(\'update\', \'' . $controllerName . 'Controller@actionUpdate\'); - Router::post(\'auditing\', \'' . $controllerName . 'Controller@actionAuditing\'); - Router::post(\'batch-auditing\', \'' . $controllerName . 'Controller@actionBatchAuditing\'); - Router::post(\'batch-delete\', \'' . $controllerName . 'Controller@actionBatchDelete\'); - Router::post(\'delete\', \'' . $controllerName . 'Controller@actionDelete\'); - Router::get(\'detail\', \'' . $controllerName . 'Controller@actionDetail\'); -}); -'; - if (!str_contains($this->clearBlank(file_get_contents($file)), $this->clearBlank($addRouter))) { - file_put_contents($file, $addRouter, FILE_APPEND); - } - - $file = $path['path'] . '/' . $controllerName . 'Controller.php'; - if (file_exists($file)) { - unlink($file); - } - - Kiri::writeFile($file, $html); - return $controllerName . 'Controller.php'; - } + Kiri::writeFile($file, $html); + return $controllerName . 'Controller.php'; + } - /** - * @return array - */ - private function getControllerPath(): array - { - $dbName = $this->db->id; - if (empty($dbName) || $dbName == 'db') { - $dbName = ''; - } + /** + * @return array + */ + private function getControllerPath(): array + { + $dbName = $this->db->id; + if (empty($dbName) || $dbName == 'db') { + $dbName = ''; + } - $module = empty($this->module) ? '' : $this->module; - $modelPath['namespace'] = $this->controllerNamespace . $module; - $modelPath['path'] = $this->controllerPath . $module; - if (!is_dir($modelPath['path'])) { - mkdir($modelPath['path']); - } - if (!empty($dbName)) { - $modelPath['namespace'] = $this->controllerNamespace . ucfirst($dbName); - $modelPath['path'] = $this->controllerPath . ucfirst($dbName); - } + $module = empty($this->module) ? '' : $this->module; + $modelPath['namespace'] = $this->controllerNamespace . $module; + $modelPath['path'] = $this->controllerPath . $module; + if (!is_dir($modelPath['path'])) { + mkdir($modelPath['path']); + } + if (!empty($dbName)) { + $modelPath['namespace'] = $this->controllerNamespace . ucfirst($dbName); + $modelPath['path'] = $this->controllerPath . ucfirst($dbName); + } - $modelPath['namespace'] = rtrim($modelPath['namespace'], '\\'); - $modelPath['path'] = rtrim($modelPath['path'], '\\'); + $modelPath['namespace'] = rtrim($modelPath['namespace'], '\\'); + $modelPath['path'] = rtrim($modelPath['path'], '\\'); - if (!is_dir($modelPath['path'])) { - mkdir($modelPath['path']); - } - return $modelPath; - } + if (!is_dir($modelPath['path'])) { + mkdir($modelPath['path']); + } + return $modelPath; + } - /** - * @param $fields - * @param $className - * @param null $object - * @param $path - * @return string - * 新增 - */ - public function controllerMethodAdd($fields, $className, $object, $path): string - { - $_path = str_replace(CONTROLLER_PATH, '', $path['path']); - $_path = lcfirst(rtrim($_path, '/')) . '/' . lcfirst($className); + /** + * @param $fields + * @param $className + * @param null $object + * @param $path + * @param string $tableName + * @return string + * 新增 + */ + public function controllerMethodAdd($fields, $className, $object, $path, string $tableName): string + { + $_path = str_replace(CONTROLLER_PATH, '', $path['path']); + $_path = lcfirst(rtrim($_path, '/')) . '/' . lcfirst($className); - $_path = ltrim($_path, '/'); + $_path = ltrim($_path, '/'); // $this->getData($path, $className, $fields); - return ' + return ' /** * @return ResponseInterface * @throws Exception */ + #[Post(\'' . $this->db->database . '/' . $tableName . '/add\')] public function actionAdd(): ResponseInterface { $model = new ' . $className . '(); @@ -218,16 +222,25 @@ class {$controllerName}Controller extends Controller return $this->response->json([\'code\' => 0, \'param\' => $model->toArray()]); } }'; - } + } - public function controllerMethodAuditing($fields, $className, $object, $path): string - { - return ' + /** + * @param $fields + * @param $className + * @param $object + * @param $path + * @param string $tableName + * @return string + */ + public function controllerMethodAuditing($fields, $className, $object, $path, string $tableName): string + { + return ' /** * @return ResponseInterface * @throws Exception */ + #[Post(\'' . $this->db->database . '/' . $tableName . '/auditing\')] public function actionAuditing(): ResponseInterface { $model = ' . $className . '::findOne($this->request->post(\'id\', 0)); @@ -240,16 +253,25 @@ class {$controllerName}Controller extends Controller return $this->response->json([\'code\' => 0, \'param\' => $model->toArray()]); } }'; - } + } - public function controllerMethodBatchAuditing($fields, $className, $object, $path): string - { - return ' + /** + * @param $fields + * @param $className + * @param $object + * @param $path + * @param string $tableName + * @return string + */ + public function controllerMethodBatchAuditing($fields, $className, $object, $path, string $tableName): string + { + return ' /** * @return ResponseInterface * @throws Exception */ + #[Post(\'' . $this->db->database . '/' . $tableName . '/batch/auditing\')] public function actionBatchAuditing(): ResponseInterface { $ids = $this->request->post(\'ids\', []); @@ -262,29 +284,31 @@ class {$controllerName}Controller extends Controller return $this->response->json([\'code\' => 0, \'message\' => \'ok\']); } }'; - } + } - /** - * @param $fields - * @param $className - * @param null $object - * @param array $path - * @return string - * 构建更新 - */ - public function controllerMethodUpdate($fields, $className, $object = NULL, $path = []): string - { - $_path = str_replace(CONTROLLER_PATH, '', $path['path']); - $_path = lcfirst(rtrim($_path, '/')) . '/' . lcfirst($className); + /** + * @param $fields + * @param $className + * @param null $object + * @param array $path + * @param string $tableName + * @return string + * 构建更新 + */ + public function controllerMethodUpdate($fields, $className, $object = NULL, array $path = [], string $tableName = ''): string + { + $_path = str_replace(CONTROLLER_PATH, '', $path['path']); + $_path = lcfirst(rtrim($_path, '/')) . '/' . lcfirst($className); - $_path = ltrim($_path, '/'); + $_path = ltrim($_path, '/'); - return ' + return ' /** * @return ResponseInterface * @throws Exception */ + #[Post(\'' . $this->db->database . '/' . $tableName . '/update\')] public function actionUpdate(): ResponseInterface { $model = ' . $className . '::findOne($this->request->post(\'id\', 0)); @@ -298,28 +322,30 @@ class {$controllerName}Controller extends Controller return $this->response->json([\'code\' => 0, \'param\' => $model->toArray()]); } }'; - } + } - /** - * @param $fields - * @param $className - * @param null $object - * @param array $path - * @return string - * 构建更新 - */ - public function controllerMethodBatchDelete($fields, $className, $object = NULL, array $path = []): string - { - $_path = str_replace(CONTROLLER_PATH, '', $path['path']); - $_path = lcfirst(rtrim($_path, '/')) . '/' . lcfirst($className); + /** + * @param $fields + * @param $className + * @param null $object + * @param array $path + * @param string $tableName + * @return string + * 构建更新 + */ + public function controllerMethodBatchDelete($fields, $className, $object = NULL, array $path = [], string $tableName = ''): string + { + $_path = str_replace(CONTROLLER_PATH, '', $path['path']); + $_path = lcfirst(rtrim($_path, '/')) . '/' . lcfirst($className); - $_path = ltrim($_path, '/'); + $_path = ltrim($_path, '/'); - return ' + return ' /** * @return ResponseInterface * @throws Exception */ + #[Post(\'' . $this->db->database . '/' . $tableName . '/batch/delete\')] public function actionBatchDelete(): ResponseInterface { $_key = $this->request->post(\'ids\', []); @@ -334,28 +360,30 @@ class {$controllerName}Controller extends Controller return $this->response->json([\'code\' => 0, \'param\' => $_key]); } }'; - } + } - /** - * @param $fields - * @param $className - * @param $managerName - * @param array $path - * @return string - * 构建详情 - */ - public function controllerMethodDetail($fields, $className, $managerName, $path = []): string - { - $_path = str_replace(CONTROLLER_PATH, '', $path['path']); - $_path = lcfirst(rtrim($_path, '/')) . '/' . lcfirst($className); + /** + * @param $fields + * @param $className + * @param $managerName + * @param array $path + * @param string $tableName + * @return string + * 构建详情 + */ + public function controllerMethodDetail($fields, $className, $managerName, array $path = [], string $tableName = ''): string + { + $_path = str_replace(CONTROLLER_PATH, '', $path['path']); + $_path = lcfirst(rtrim($_path, '/')) . '/' . lcfirst($className); - $_path = ltrim($_path, '/'); + $_path = ltrim($_path, '/'); - return ' + return ' /** * @return ResponseInterface * @throws Exception */ + #[Get(\'' . $this->db->database . '/' . $tableName . '/detail\')] public function actionDetail(): ResponseInterface { $model = ' . $managerName . '::findOne($this->request->query(\'id\')); @@ -365,28 +393,30 @@ class {$controllerName}Controller extends Controller return $this->response->json([\'code\' => 0, \'param\' => $model->toArray()]); } }'; - } + } - /** - * @param $fields - * @param $className - * @param $managerName - * @param $path - * @return string - * 构建删除操作 - */ - public function controllerMethodDelete($fields, $className, $managerName, $path): string - { - $_path = str_replace(CONTROLLER_PATH, '', $path['path']); - $_path = lcfirst(rtrim($_path, '/')) . '/' . lcfirst($className); + /** + * @param $fields + * @param $className + * @param $managerName + * @param $path + * @param string $tableName + * @return string + * 构建删除操作 + */ + public function controllerMethodDelete($fields, $className, $managerName, $path, string $tableName = ''): string + { + $_path = str_replace(CONTROLLER_PATH, '', $path['path']); + $_path = lcfirst(rtrim($_path, '/')) . '/' . lcfirst($className); - $_path = ltrim($_path, '/'); + $_path = ltrim($_path, '/'); - return ' + return ' /** * @return ResponseInterface * @throws Exception */ + #[Post(\'' . $this->db->database . '/' . $tableName . '/delete\')] public function actionDelete(): ResponseInterface { $_key = $this->request->post(\'id\', 0); @@ -401,28 +431,30 @@ class {$controllerName}Controller extends Controller return $this->response->json([\'code\' => 0, \'message\' => \'ok\']); } }'; - } + } - /** - * @param $fields - * @param $className - * @param $managerName - * @param array $path - * @return string - * 构建查询列表 - */ - public function controllerMethodList($fields, $className, $managerName, $path = []): string - { - $_path = str_replace(CONTROLLER_PATH, '', $path['path']); - $_path = lcfirst(rtrim($_path, '/')) . '/' . lcfirst($className); + /** + * @param $fields + * @param $className + * @param $managerName + * @param array $path + * @param string $tableName + * @return string + * 构建查询列表 + */ + public function controllerMethodList($fields, $className, $managerName, array $path = [], string $tableName = ''): string + { + $_path = str_replace(CONTROLLER_PATH, '', $path['path']); + $_path = lcfirst(rtrim($_path, '/')) . '/' . lcfirst($className); - $_path = ltrim($_path, '/'); - return ' + $_path = ltrim($_path, '/'); + return ' /** * @return ResponseInterface * @throws Exception */ + #[Get(\'' . $this->db->database . '/' . $tableName . '/list\')] public function actionList(): ResponseInterface { //分页处理 @@ -457,61 +489,61 @@ class {$controllerName}Controller extends Controller return $this->response->json([\'code\' => 0, \'param\' => $data, \'count\' => $count]); } '; - } + } - private function getData($path, $formClass, $fields): string - { - $html = ''; + private function getData($path, $formClass, $fields): string + { + $html = ''; - $length = $this->getMaxLength($fields); + $length = $this->getMaxLength($fields); - $class = ''; - $header = []; - $toArray = []; - foreach ($fields as $key => $val) { - if (str_starts_with($val['Type'], 'enum')) { - preg_match('/\(.*\)/', $val['Type'], $number); - $number[0] = trim($number[0], '()'); + $class = ''; + $header = []; + $toArray = []; + foreach ($fields as $key => $val) { + if (str_starts_with($val['Type'], 'enum')) { + preg_match('/\(.*\)/', $val['Type'], $number); + $number[0] = trim($number[0], '()'); - $values = explode(',', $number[0]); - $number[1] = 0; - foreach ($values as $evalue) { - $evalue = trim($evalue, '\''); + $values = explode(',', $number[0]); + $number[1] = 0; + foreach ($values as $evalue) { + $evalue = trim($evalue, '\''); - $leng = mb_strlen($evalue); - if ($number[1] < $leng) { - $number[1] = $leng; - } - } + $leng = mb_strlen($evalue); + if ($number[1] < $leng) { + $number[1] = $leng; + } + } - $type = strtolower(preg_replace('/\(\'\w+\'(,\'\w+\')*\)/', '', $val['Type'])); + $type = strtolower(preg_replace('/\(\'\w+\'(,\'\w+\')*\)/', '', $val['Type'])); - $first = preg_replace('/\s+\w+/', '', $type); - } else { - preg_match('/\((\d+)(,(\d+))*\)/', $val['Type'], $number); - $type = strtolower(preg_replace('/\(\d+(,\d+)*\)/', '', $val['Type'])); + $first = preg_replace('/\s+\w+/', '', $type); + } else { + preg_match('/\((\d+)(,(\d+))*\)/', $val['Type'], $number); + $type = strtolower(preg_replace('/\(\d+(,\d+)*\)/', '', $val['Type'])); - $first = preg_replace('/\s+\w+/', '', $type); - } + $first = preg_replace('/\s+\w+/', '', $type); + } - if ($val['Extra'] == 'auto_increment') continue; - if ($type == 'timestamp') continue; - $_field = []; - $_field['required'] = $this->checkIsRequired($val); - foreach ($this->type as $_key => $value) { - if (!in_array(strtolower($first), $value)) continue; - $comment = $val['Comment']; - $_field['type'] = $_key; + if ($val['Extra'] == 'auto_increment') continue; + if ($type == 'timestamp') continue; + $_field = []; + $_field['required'] = $this->checkIsRequired($val); + foreach ($this->type as $_key => $value) { + if (!in_array(strtolower($first), $value)) continue; + $comment = $val['Comment']; + $_field['type'] = $_key; - $toArray[] = ' + $toArray[] = ' \'' . str_pad($val['Field'] . '\'', $length, ' ', STR_PAD_RIGHT) . ' => $this->' . $val['Field'] . ','; - if ($type == 'date' || $type == 'datetime' || $type == 'time') { - if (!in_array('use Kiri\Router\Validator\Inject\Length;', $header)) { - $header[] = 'use Kiri\Router\Validator\Inject\Length;'; - } - $class .= match ($type) { - 'date' => ' + if ($type == 'date' || $type == 'datetime' || $type == 'time') { + if (!in_array('use Kiri\Router\Validator\Inject\Length;', $header)) { + $header[] = 'use Kiri\Router\Validator\Inject\Length;'; + } + $class .= match ($type) { + 'date' => ' /** * ' . (empty($comment) ? '这批懒的很,没写注释' : $comment) . ' */ @@ -519,7 +551,7 @@ class {$controllerName}Controller extends Controller public string $' . $val['Field'] . ' = \'1960-06-01\'; ', - 'time' => ' + 'time' => ' /** * ' . (empty($comment) ? '这批懒的很,没写注释' : $comment) . ' */ @@ -527,7 +559,7 @@ class {$controllerName}Controller extends Controller public string $' . $val['Field'] . ' = \'00:00\'; ', - default => ' + default => ' /** * ' . (empty($comment) ? '这批懒的很,没写注释' : $comment) . ' */ @@ -535,65 +567,65 @@ class {$controllerName}Controller extends Controller public string $' . $val['Field'] . ' = \'\'; ', - }; - } else if ($type == 'json' || $type == 'text' || $type == 'longtext') { - $class .= ' + }; + } else if ($type == 'json' || $type == 'text' || $type == 'longtext') { + $class .= ' /** * ' . (empty($comment) ? '这批懒的很,没写注释' : $comment) . ' */ public string $' . $val['Field'] . ' = \'\'; '; - } else { - if (isset($number[0])) { - if (strpos(',', $number[0])) { - $_field['min'] = $number[1]; - $_field['max'] = $number[3]; - } else { - $_field['min'] = 0; - $_field['max'] = $number[1]; - } - } - if ($type == 'enum' && !in_array('use Kiri\Router\Validator\Inject\In;', $header)) { - $header[] = 'use Kiri\Router\Validator\Inject\In;'; - } - if ($_field['required'] == 'true' && !in_array('use Kiri\Router\Validator\Inject\Required;', $header)) { - $header[] = 'use Kiri\Router\Validator\Inject\Required;'; - } - if (!in_array('use Kiri\Router\Validator\Inject\MaxLength;', $header)) { - $header[] = 'use Kiri\Router\Validator\Inject\MaxLength;'; - } - $class .= ' + } else { + if (isset($number[0])) { + if (strpos(',', $number[0])) { + $_field['min'] = $number[1]; + $_field['max'] = $number[3]; + } else { + $_field['min'] = 0; + $_field['max'] = $number[1]; + } + } + if ($type == 'enum' && !in_array('use Kiri\Router\Validator\Inject\In;', $header)) { + $header[] = 'use Kiri\Router\Validator\Inject\In;'; + } + if ($_field['required'] == 'true' && !in_array('use Kiri\Router\Validator\Inject\Required;', $header)) { + $header[] = 'use Kiri\Router\Validator\Inject\Required;'; + } + if (!in_array('use Kiri\Router\Validator\Inject\MaxLength;', $header)) { + $header[] = 'use Kiri\Router\Validator\Inject\MaxLength;'; + } + $class .= ' /** * ' . (empty($comment) ? '这批懒的很,没写注释' : $comment) . ' */' . ($type == 'enum' ? ' #[In([' . $number[0] . '])]' : '') . ($_field['required'] == 'true' ? ' #[Required]' : '') . ' #[MaxLength(' . ($number[1] ?? 0) . ')] - public ' . $_key . ' $' . $val['Field'] . ' = '.(match ($type) { - 'tinyint', 'smallint', 'mediumint', 'int', 'bigint', 'float', 'double', 'decimal', 'timestamp', 'year' => 0, - 'bool', 'boolean' => false, - default => '\'\'', - }).'; + public ' . $_key . ' $' . $val['Field'] . ' = ' . (match ($type) { + 'tinyint', 'smallint', 'mediumint', 'int', 'bigint', 'float', 'double', 'decimal', 'timestamp', 'year' => 0, + 'bool', 'boolean' => false, + default => '\'\'', + }) . '; '; - } - } - $this->rules[$val['Field']] = $_field; - } + } + } + $this->rules[$val['Field']] = $_field; + } - $namespace = str_replace('Controller', 'Form', $path['namespace']); - $path = str_replace('Controller', 'Form', $path['path']); - if (!is_dir($_SERVER['PWD'] . '/app/Form/')) { - mkdir($_SERVER['PWD'] . '/app/Form/'); - } - if (!is_dir($path)) { - mkdir($path); - } - if (!file_exists($path . '/' . $formClass . 'Form.php')) { - touch($path . '/' . $formClass . 'Form.php'); - } - file_put_contents($path . '/' . $formClass . 'Form.php', ' $val) { - if (mb_strlen($val['Field'] . ' >=') > $length) $length = mb_strlen($val['Field'] . ' >='); - } - return $length; - } + /** + * @param $fields + * @return int + */ + private function getMaxLength($fields): int + { + $length = 0; + foreach ($fields as $key => $val) { + if (mb_strlen($val['Field'] . ' >=') > $length) $length = mb_strlen($val['Field'] . ' >='); + } + return $length; + } - /** - * @param $fields - * @return string - */ - private function getWhere($fields): string - { - $html = ''; + /** + * @param $fields + * @return string + */ + private function getWhere($fields): string + { + $html = ''; - $length = $this->getMaxLength($fields); - foreach ($fields as $key => $val) { - preg_match('/\d+/', $val['Type'], $number); + $length = $this->getMaxLength($fields); + foreach ($fields as $key => $val) { + preg_match('/\d+/', $val['Type'], $number); - $type = strtolower(preg_replace('/\(\d+\)/', '', $val['Type'])); + $type = strtolower(preg_replace('/\(\d+\)/', '', $val['Type'])); - $first = preg_replace('/\s+\w+/', '', $type); + $first = preg_replace('/\s+\w+/', '', $type); - if ($type == 'timestamp') continue; - if ($type == 'json') continue; + if ($type == 'timestamp') continue; + if ($type == 'json') continue; - foreach ($this->type as $_key => $value) { - if (!in_array(strtolower($first), $value)) continue; - $comment = '//' . $val['Comment']; - if ($type == 'date' || $type == 'datetime' || $type == 'time') { - $_tps = '$this->request->query(\'' . $val['Field'] . '\', null)'; - $html .= ' + foreach ($this->type as $_key => $value) { + if (!in_array(strtolower($first), $value)) continue; + $comment = '//' . $val['Comment']; + if ($type == 'date' || $type == 'datetime' || $type == 'time') { + $_tps = '$this->request->query(\'' . $val['Field'] . '\', null)'; + $html .= ' $pWhere[\'' . str_pad($val['Field'] . ' <=\']', $length, ' ', STR_PAD_RIGHT) . ' = ' . str_pad($_tps . ';', 60, ' ', STR_PAD_RIGHT) . $comment; - $html .= ' + $html .= ' $pWhere[\'' . str_pad($val['Field'] . ' >=\']', $length, ' ', STR_PAD_RIGHT) . ' = ' . str_pad($_tps . ';', 60, ' ', STR_PAD_RIGHT) . $comment; - } else { + } else { - $_tps = '$this->request->query(\'' . $val['Field'] . '\', null)'; - $html .= ' + $_tps = '$this->request->query(\'' . $val['Field'] . '\', null)'; + $html .= ' $pWhere[\'' . str_pad($val['Field'] . '\']', $length, ' ', STR_PAD_RIGHT) . ' = ' . str_pad($_tps . ';', 60, ' ', STR_PAD_RIGHT) . $comment; - } - } - } - return $html; - } + } + } + } + return $html; + } }