# thinkphp-tools-create **Repository Path**: magein/thinkphp-tools-create ## Basic Information - **Project Name**: thinkphp-tools-create - **Description**: thinkphp5框架下,快速创建model,controller等相关的文件 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-01-07 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 快速创建application program interface文件 1. 接口相关文件 controller,service,swagger 2. 模型相关文件 constant,dictionary,logic,model,validate ### 注意事项 在此项目下创建文件,没有tools相关的路径限制,所以在项目中,做了兼容处理 * 引入类 (需要去除物理路径的tools字样) * 实例化类 (在正确引入之后,命名空间是包含tools字样的,所以在实例化类的时候需要检测时候包含tools) * 目前在 create.php 使用了实例化lib下面的类, * 配置文件中的路径信息 * 注意目录的可写权限 * 常量类型的字段信息约定的备注信息格式,如: 状态 0 禁用 forbid 1 启用 use ### 如何使用 此项目下 ```angular2html php Run.php test ``` 在tp下使用,在根目录执行 ```angular2html git clone https://gitee.com/magein/thinkphp-tools-create.git tools ``` 然后使用 ```angular2html php tools/Run.php ``` 或者在根目录创建 create文件 ```php #!/usr/bin/env php model和validate依赖think\model和think\validate类,所以目前适用于tp框架 > 在线文档工具依赖 composer require "magein/swagger": "dev-master" ### 创建文件的位置 > 创建文件的位置以及继承关系放在config.ini中,所以可以根据项目的架构调整位置以及继承关系 #### model model对应的是数据库中的表信息,创建一个模型文件的同时会创建相关的文件 1. Constant 模型中的常量信息 1. 从数据库中自动读取字段信息 2. 字段类型为tinyint 3. 字段描述为 状态 0 下架 down 1 上架 up 4. 描述的第一个作为描述信息, 后续解析为常量信息 2. Dictionary 模型的字段的描述 1. 后台数据展示需要把字段信息处理成可阅读的 2. 导出的时候需要把字段信息处理成可读的 3. 对前段展示的接口文档,字段信息需要处理成可读的 4. 字段的作用就是规范字段信息,比如 手机可以用phone mobile等,建议规范一个 3. Logic 模型对应的业务逻辑 1. 在实际的业务中,需要对数据新增新增,更新,不建议随便实例化model 2. 规范一个入口,以后维护的时候会很方便 3. model继承框架中内置的model中有内置的一些方法,如果在model中随便写方法,定义不明确 4. logic是对业务逻辑的隔离,提高安全性,提高对数据的保护 4. Model 模型 1. 删除使用软删除 2. 最id,主键,create_time字段信息处理成只读 5. Validate 模型的验证信息 1. 模型创建,更新的时候使用的验证信息 2. 从数据库中读取对应的表,不能为空的没有默认值的会根据类型创建对应的规则 3. 错误信息,根据字段的描述信息生成 #### controller 1. controller 控制器 2. service 服务 3. swagger 在线调试接口 #### model,logic,service理解 model是数据表抽象出来的概念,常描述为模型, 主要的跟数据库打交道 logic是逻辑层 1. 数据处理 2. 数据安全 3. 方便维护 举几个栗子 数据处理: 后台管理员查询可以查询用户的收货地址详细信息,对于model来说只需要根据id查询即可 对于用户来说,使用id直接查询,是不安全的,需要验证这个id下的收货地址是不是该用户的 所以验证可以归纳到逻辑层面,model负责查询; 如:用户查看收货地址详细信息,前段传递id,后端获取当前用户的id 1. 在使用id跟uid两个条件查询,查询结果为空,表示不存在 2. 使用id查询 1. 查询结果为空,则数据不存在 2. 查询结果存在,但是查询结果的uid跟当前用户的uid不一致,则视为数据不存在 针对优化查询来说,直接使用id查询速度比使用id,uid查询会快, 查询结果中的uid跟当前用户的uid对比是业务逻辑处理, 所以model负责查询,logic负责验证 数据安全: 多人开发的时候,随意的操作model模型,可能有存在一些数据类型,数据格式,关联数据等等相关的处理工作 使用logic可以统一入口,统一处理,统一返回,这样就减少脏数据以及关联数据的操作, 方便维护: 直接操作模型,或者db类,后期维护,更新可能修改的不完全,程序可以执行,会不稳定 统一入口,可以保护数据安全以及程序稳定执行,开发过程中及时发现问题,解决问题 service服务层 为application program interface等提供指定的服务,单对单的实现方式 这里可能跟logic的概念有一点相同,使用service层,会显得多了一层,代码有点臃肿,冗余度过高 但是service层在某些情况下,也是起到隔离的作用,保护当前业务不受其他逻辑影响,