ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
## 开发规范 #### 开发者组件为独立模块,可自由遵守TP5.1规范开发 **注意事项** >1.组件即模块,在进行组件开发时,需严格遵循ThinkPHP5.1的相关规范,模块目录**请直接填写组件ID**。 组件ID获取方式:进入开发者中心-开发控制台-组件管理-新建规格后-获取组件ID ![](https://box.kancloud.cn/97d2dd9fdcc2daa1ce9355c3191d93e7_1165x283.png) 备注: **组件ID为系统自动产生,请直接复制使用即可。** --- >2.组件后端入口地址请遵循 module/controller/method 形式 (**请尽量使用默认index控制器和index方法作为入口**) ``` // 组件模块地址示例 /hlhj/index/index ``` --- >3.在进行组件开发期间,不允许修改该组件以外的任意文件和代码(除框架根目录提供的uploads中该组件对应的资源目录) --- >4.开发者完成组件开发后,只需将组件目录进行压缩(zip格式),压缩包名称与组件目录名称一致,压缩包结构如下: ``` 组件id.zip ├─组件目录 以组件id命名的目录 │ ├─组件目录 以组件id命名的模块目录 │ ├─db │ │ ├─2018110102.sql 该组件使用到的数据表sql文件 │ │ ├─2018101201.sql 该组件使用到的数据表sql文件 │ │ ├─……………… ``` >**注意:** 对于sql文件,平台审核规则为不允许在sql文件中出现删除表,删除数据等行为,组件数据表前缀使用**数字标记版本号**(只能以数字形成),否则审核不通过,除非有特殊情况,请与平台运营人员联系 **特别说明**:对于组件的sql文件,需要以增量形式做版本,推荐使用日期+两位数字形式命名,例如 2018101201.sql,当我们做自动化集成时,我们会对sql文件按照命名做排序,从小到大依次执行;如果组件方不想用日期+两位数字作为命名规则,也可使用其它 **数字** 方式命名,例如 1.sql;2.sql 等,但是 需要注意的地方是,一旦组件选定一种sql文件命名方式之后,该组件需要一直保持该命名方式,原则就是 当组件sql不止一个文件时,对sql文件名称按照从小到大排序后,能符合组件sql版本更新的逻辑和顺序 --- >5.为避位路由冲突,开发者不能自定义路由 --- >6.由于天马框架根目录设置成最外层目录并且TP框架自带url()方法生成的url地址会自动加上public,这样url链接访问就会出错,因此应避免使用url()方法,应直接将链接写成"模块/控制器/方法"这种方式 --- * * * * * ## 组件目录结构 开发者进行组件开发时,请参照我们提供的模块目录结构进行开发 ``` │ ├─组件目录(组件id) 开发者组件名称 │ │ ├─controller 控制器目录 必要 │ │ ├─model 模型目录 必要 │ │ ├─view 视图目录 必要 │ │ ├─config 组件配置目录目录 非必要 │ │ ├─ ... 其他 ``` >在进行组件开发时,默认的组件目录需要需要包括 controller、model、view这三个目录,如果开发者使用前后端分离,则不需要view,直接将你的前端文件放在该组件目录下,并且将入口地址 以 application开头,.html 前端文件结尾。 >**例如** `application/hlhj01xwzx02qazxsw/web/index.html` ## config.ini配置文件结构 ``` [config] PATH=application/hlhj01xwzx02qazxsw/web/index.html ``` >**** ## database配置详解: ``` // 数据库类型 'type' => 'mysql', //默认统一使用mysql,不用更改 // 服务器地址 'hostname' => Env::get(SERVER_ENV.'HOSTNAME'), // 数据库名 'database' => Env::get(SERVER_ENV.'DATABASE_NAME'), // 用户名 'username' => Env::get(SERVER_ENV.'DATABASE_USERNAME'), // 密码 'password' => Env::get(SERVER_ENV.'DATABASE_PASSWORD'), // 数据库表前缀 'prefix' => '', //由于各组件公用一个库,以组件名称作为数据库表前缀区分,所以各组件务必不要设置prefix ``` >目前我们并没有采用模块分库的形式,而是共用一个数据库,开发者只需要按如上形式配置数据库,无需改动。SERVER_ENV 是我们框架提供的一个常量,无需更改。如无特殊配置需要,模块无需单独配置database.php文件,直接使用框架提供的database.php 文件。 --- **组件开发人员在定义model时可使用以下两种方式:** >1,在model里面指定 $table ,以ORM的形式处理model (**推荐**) --- >2,或者直接使用Db::table('tablename')的方式** ## 资源上传 >框架鼓励开发者使用第三方存储,除此之外,请将所有图片等资源文件的路径务必使用框架根目录提供的uploads/模块名/..,参考如下: 资源文件上传,框架现做了统一封装,通过common中的方法提供给了组件进行调用,从而组件不需要关心上传到哪里,怎么配置oss,七牛云或者本地上传等,详见 ``` ├─appconf 客户端需要的配置文件 ├─application 应用目录 ├─config 应用配置目录 ├─uploads │ ├─moduleName 组件名称(同名application中的moduleName) │ │ ├─resources 该组件下使用到的各类图片等资源文件 ``` ## 我们的验收测试环境 **操作系统:**`CentOS Linux 7.4`  **服务器:**`Apache 2.4` **数据库:**`MySQL 5.5` **PHP版本:**`php7.1`