thinkphp6.1~8.0 快速创建CRUD

GIT 源码 TINKPHP

快速创建模型CRUD源码

import os
import tkinter as tk
from tkinter import messagebox

#转小写
def toLowerCase(str):
        """
        :type str: str
        :rtype: str
        """
        return "".join(chr(ord(c) + 32) if 65 <= ord(c) <= 90 else c for c in str)
#转表格式
def castTable(table):
    input_str = table
    output_str = ""
    for char in input_str:
        if char.isupper():
            output_str += "_" + char.lower()
        else:
            output_str += char
    output_str = output_str.lstrip("_")
    return output_str
#转换驼峰模式
def castHump(table):
    input_str = table
    output_str = "".join(word.capitalize() for word in input_str.split("_"))
    return output_str
#模型修改
def createModel(name):
    current_dir = os.getcwd()
    model=current_dir+"\\"+"app\model\\"+name+"Model.php"
    lines=[]
    f = open(model,"r",encoding="utf-8")
    n=0
    for line in f.readlines():
        lines.append(line)
        if n==12:
            table="    protected $name = '"+castTable(name)+"';"+"\n"
            lines.append(table)
        n+=1
    s=''.join(lines)
    f=open(model,'w+',encoding='utf-8')
    f.write(s)
    f.close()
#控制器修改
def createController(name):
    current_dir = os.getcwd()
    controller=current_dir+"\\"+"app\controller\\"+name+".php"
    lines=[]
    f = open(controller,"r",encoding="utf-8")
    n=0
    controllLine=0
    for line in f.readlines():
        lines.append(line)
        if n==5:
            table="use app\service\\"+name+"Service;"+"\n"
            lines.append(table)
        n+=1
        if line.find("//")>0:
            controllLine+=1
        if line.find("//")>0 and controllLine==1:
            #index方法
            index="       return "+name+"Service::index($request->param());"+"\n"
            lines.append(index)
        if line.find("//")>0 and controllLine==2:
            #create方法
            create="       return "+name+"Service::create($request->param());"+"\n"
            lines.append(create)
        if line.find("//")>0 and controllLine==5:
            #edit方法
            edit="       return "+name+"Service::update($request->param());"+"\n"
            lines.append(edit)  
        if line.find("//")>0 and controllLine==7:
            #delete方法
            delete="       return "+name+"Service::delete($id);"+"\n"
            lines.append(delete)   
    s=''.join(lines)
    s=s.replace("index()", "index(Request $request)")
    s=s.replace("create()", "create(Request $request)")
    s=s.replace("edit($id)", "edit(Request $request)")
    f=open(controller,'w+',encoding='utf-8')
    f.write(s)
    f.close()
#服务修改
def createService(name):
    current_dir = os.getcwd()
    service=current_dir+"\\"+"app\service\\"+name+"Service.php"
    lines=[]
    f = open(service,"r",encoding="utf-8")
    n=0
    serviceLine=0
    end=0
    for line in f.readlines():
        lines.append(line)
        if n==3:
            table="use app\model\\"+name+"Model;"+"\n"
            lines.append(table)
            baseService="use app\BaseService;"+"\n"
            lines.append(baseService)
        n+=1
        if line.find("//")>0:
            serviceLine+=1
        if end==1:
            lines.append("    public static function index($data){"+"\n")
            lines.append("        return self::baseList(new "+name+"Model(),$data);"+"\n")
            lines.append("    }"+"\n")
            lines.append("    public static function create($data){"+"\n")
            lines.append("        return self::baseCreate(new "+name+"Model(),$data);"+"\n")
            lines.append("    }"+"\n")
            lines.append("    public static function update($data){"+"\n")
            lines.append("        return self::baseUpdate(new "+name+"Model(),$data);"+"\n")
            lines.append("    }"+"\n")
            lines.append("    public static function delete($data){"+"\n")
            lines.append("        return self::baseDelete(new "+name+"Model(),$data);"+"\n")
            lines.append("    }"+"\n")
            end=2
        if line.find("//")>0 and serviceLine==2:
            end=1
    s=''.join(lines)
    s=s.replace("\\think\\Service", "BaseService")
    f=open(service,'w+',encoding='utf-8')
    f.write(s)
    f.close()

#创建路由
def createRoute(name):
    current_dir = os.getcwd()
    route=current_dir+"\\"+"route\\app.php"
    lines=[]
    f = open(route,"r",encoding="utf-8") 
    name=name[0].lower() + name[1:]
    for line in f.readlines():
        if line.find("结尾符")>0:
            lines.append("Route::post('"+name+"/list', '"+name+"/index');"+"\n")
            lines.append("Route::post('"+name+"/create', '"+name+"/create');"+"\n")
            lines.append("Route::post('"+name+"/edit', '"+name+"/edit');"+"\n")
            lines.append("Route::post('"+name+"/delete', '"+name+"/delete');"+"\n")
            lines.append("//结尾符用作快速创建路由"+"\n")
        else:
            lines.append(line)
    s=''.join(lines)
    f=open(route,'w+',encoding='utf-8')
    f.write(s)
    f.close()
def button_click():
    input_text = entry.get()
    #转驼峰
    input_text =castHump(input_text)
    current_dir = os.getcwd()
    #进入根目录
    os.system("cd "+ current_dir)
    #表名
    #table="Test"
    #执行命令
    commandController="php think make:controller app\controller\\"+input_text
    status=os.system(commandController)
    commandModel="php think make:model app\model\\"+input_text+"Model"
    statusModel=os.system(commandModel)
    commandService="php think make:service app\service\\"+input_text+"Service"
    statusService=os.system(commandService)
    createModel(input_text)
    createController(input_text)
    createService(input_text)
    #路由接口
    createRoute(input_text)
    messagebox.showinfo("提示", "执行完成")       
# 创建主窗口
root = tk.Tk()
root.geometry("423x131")
root.title("快速创建模型")

# 创建输入框
entry = tk.Entry(root)
entry.pack()

# 创建按钮
button = tk.Button(root, text="点击", command=button_click)
button.pack()

# 运行主循环
root.mainloop()

相关推荐

  1. thinkphp6.1~8.0 快速创建CRUD

    2024-03-15 05:04:05       38 阅读
  2. 如何使用ThinkPHP框架(thinkphp8.0)创建定时任务?

    2024-03-15 05:04:05       56 阅读
  3. ThinkPHP5.1 创建控制器类

    2024-03-15 05:04:05       34 阅读
  4. ThinkPHP(FastAdmin)快递100订阅快递信息

    2024-03-15 05:04:05       32 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-15 05:04:05       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-15 05:04:05       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-15 05:04:05       87 阅读
  4. Python语言-面向对象

    2024-03-15 05:04:05       96 阅读

热门阅读

  1. 高德地图2025届算法笔试3.12

    2024-03-15 05:04:05       41 阅读
  2. 计算机视觉

    2024-03-15 05:04:05       37 阅读
  3. Linux——GlusterFS分布式文件系统群集

    2024-03-15 05:04:05       30 阅读
  4. OpenCV亮度对比度调节

    2024-03-15 05:04:05       39 阅读
  5. 机器视觉学习(三)—— 保存视频流

    2024-03-15 05:04:05       38 阅读
  6. 动态规划矩阵

    2024-03-15 05:04:05       40 阅读
  7. 云计算有什么作用

    2024-03-15 05:04:05       40 阅读