thinkphp6.1~8.0 快速创建CRUD

文章介绍了如何使用TinkPHP框架自动化创建模型、控制器、服务以及相关路由,提供了一段包含函数的代码示例,用户只需输入模型名称,即可自动生成相应的文件结构并执行相关命令。
摘要由CSDN通过智能技术生成

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()

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值