<?phpnamespace ZX\Generator;use ZX\Generator;use ZX\Tool\File;use ZX\Tool\Hump;use ZX\Tool\MysqlOperation;class Fastapi extends Generator{//文件头部protected static $fileHeaer = '<?php ';//文件后缀protected static $fileSuffix = '.php';//控制器文件后缀protected static $controllerSuffix = 'Controller';//服务文件后缀protected static $serviceSuffix = 'Service';//模型文件后缀protected static $modelSuffix = '';//控制器文件路径protected static $controllerPath = 'controller' . DIRECTORY_SEPARATOR . 'Admin';//服务文件路径protected static $servicePath = 'service' . DIRECTORY_SEPARATOR . 'Admin';//模型文件路径protected static $modelPath = 'model';//应用根路径protected static $appPath = 'app';//控制器目录名称protected static $allControllerPath = '';//服务目录名称protected static $allServicePath = '';//模型目录名称protected static $allModelPath = '';//不需要处理的字段protected static $notDeal = ['id', 'create_at', 'update_at', 'is_delete', 'delete_at', 'create_time', 'update_time', 'deleted_at'];public static function getClassName(){return basename(__CLASS__);}public static function genAllTable(bool $camel = false){$table = MysqlOperation::getAllTableName();if (!empty($table)) {foreach ($table as $k => $v) {self::genTable($v['TABLE_NAME'], $camel);}}}public static function genPath(string $path = './'){self::$allControllerPath = $path . self::$appPath . DIRECTORY_SEPARATOR . self::$controllerPath;self::$allServicePath = $path . self::$appPath . DIRECTORY_SEPARATOR . self::$servicePath;self::$allModelPath = $path . self::$appPath . DIRECTORY_SEPARATOR . self::$modelPath;File::makeFile(self::$allControllerPath);File::makeFile(self::$allServicePath);File::makeFile(self::$allModelPath);}public static function genTable(string $tableName, bool $camel = false){//获取表的字段$column = MysqlOperation::getTableColumn($tableName);//生成目录self::genPath();//生产控制器self::genController($tableName, $column, $camel);//生产服务self::genService($tableName, $column, $camel);//生产模型self::genModel($tableName, $column, $camel);}public static function genController(string $tableName, array $column, bool $camel = false){//表名$upTableName = ucfirst(Hump::camelize($tableName));$content = File::getFileContent(new self(), 'Controller.template', self::getClassName());//列数据$paramString = self::genControllerParam($column, $camel);$search = ['{upTableName}', '{paramString}'];$replace = [$upTableName, $paramString];$content = str_replace($search, $replace, $content);$contents = self::$fileHeaer . PHP_EOL . $content;File::writeToFile($upTableName . self::$controllerSuffix . self::$fileSuffix, self::$allControllerPath, $contents);}public static function genControllerParam(array $column, bool $camel = false){$return = '';$array = MysqlOperation::transforColumnMysqlToPHP($column);foreach ($array as $k => $v) {if (in_array($v['COLUMN_NAME'], self::$notDeal)) {continue;}$default = MysqlOperation::getdefaultValue($v['DATA_TYPE']);//蛇形转驼峰$camel && $v['COLUMN_NAME'] = Hump::camelize($v['COLUMN_NAME']);$str = <<<EOF\$where['{$v['COLUMN_NAME']}'] = parameterCheck(\$request->input('{$v['COLUMN_NAME']}'), '{$v["DATA_TYPE"]}', {$default});EOF;$return = $return . $str . PHP_EOL;}return $return;}public static function genService(string $tableName, array $column, bool $camel = false){$upTableName = ucfirst(Hump::camelize($tableName));$lcTableName = lcfirst($upTableName);$content = File::getFileContent(new self(), 'Service.template', self::getClassName());$ifParamString = self::genServiceIfParam($tableName, $column, $camel);$paramString = self::genServiceParam($tableName, $column, $camel);$search = ['{upTableName}', '{paramString}', '{lcTableName}', '{ifParamString}'];$replace = [$upTableName, $paramString, $lcTableName, $ifParamString];$content = str_replace($search, $replace, $content);$contents = self::$fileHeaer . PHP_EOL . $content;File::writeToFile($upTableName . self::$serviceSuffix . self::$fileSuffix, self::$allServicePath, $contents);}public static function genServiceIfParam(string $tableName, array $column, bool $camel = false){$upTableName = ucfirst(Hump::camelize($tableName));$lcTableName = lcfirst($upTableName);$return = '';$array = MysqlOperation::transforColumnMysqlToPHP($column);foreach ($array as $k => $v) {if (in_array($v['COLUMN_NAME'], self::$notDeal)) {continue;}//蛇形转驼峰$camel && $v['COLUMN_NAME'] = Hump::camelize($v['COLUMN_NAME']);$str = <<<EOFif (!empty(\$where['{$v['COLUMN_NAME']}'])) {\${$lcTableName} = \${$lcTableName}->where('{$v['COLUMN_NAME']}', \$where['{$v['COLUMN_NAME']}']);}EOF;$return = $return . $str . PHP_EOL;}return $return;}public static function genServiceParam(string $tableName, array $column, bool $camel = false){$upTableName = ucfirst(Hump::camelize($tableName));$lcTableName = lcfirst($upTableName);$return = '';$array = MysqlOperation::transforColumnMysqlToPHP($column);foreach ($array as $k => $v) {if (in_array($v['COLUMN_NAME'], self::$notDeal)) {continue;}//蛇形转驼峰$camel && $v['COLUMN_NAME'] = Hump::camelize($v['COLUMN_NAME']);$str = <<<EOFisset(\$where['{$v['COLUMN_NAME']}']) && \${$lcTableName}->{$v['COLUMN_NAME']} = \$where['{$v['COLUMN_NAME']}'];EOF;$return = $return . $str . PHP_EOL;}return $return;}public static function genModel(string $tableName, array $column, bool $camel = false){$upTableName = ucfirst(Hump::camelize($tableName));$content = File::getFileContent(new self(), 'Model.template', self::getClassName());$search = ['{upTableName}', '{tableName}'];$replace = [$upTableName, $tableName];$content = str_replace($search, $replace, $content);$contents = self::$fileHeaer . PHP_EOL . $content;File::writeToFile($upTableName . self::$modelSuffix . self::$fileSuffix, self::$allModelPath, $contents);}public static function genAllRouter(){$table = MysqlOperation::getAllTableName();if (!empty($table)) {foreach ($table as $k => $v) {self::genRouter($v['TABLE_NAME']);}}}public static function genRouter(string $tableName){$camelizeTableName = Hump::camelize($tableName);$upTableName = ucfirst(Hump::camelize($tableName));$content = File::getFileContent(new self(), 'Router.template', self::getClassName());$search = ['{upTableName}', '{tableName}', '{$camelizeTableName}'];$replace = [$upTableName, $tableName, $camelizeTableName];$content = str_replace($search, $replace, $content);// $content = self::$fileHeaer . PHP_EOL . $content;File::writeToFile('router' . self::$fileSuffix, './', $content . PHP_EOL, 'a+', true);}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。