应用插件开发规范
应用插件要求
- 插件不能包含侵权的代码、图标、图片等
 - 插件源码保证是完整的代码,且不能加密
 - 插件必须是完整的功能,不能是简单的功能
 - 必须提供完整的功能介绍、文档
 - 插件中不建议使用协程功能,因为用户可能并没有开启协程
 
应用插件标识
每个应用插件都有一个唯一标识,这个标识由字母组成。这个标识影响应用插件所在源码目录名、类的命名空间、插件数据库表前缀。
假设开发者以foo为插件标识,那么插件源码所在目录为{主项目}/plugin/foo,相应的插件的命名空间为plugin\foo,表前缀为foo_。
由于标识全网唯一,所以开发者在开发前需要检测标识是否可用,检测地址应用标识检测。
数据库
- 表名由小写字母
a-z以及下划线_组成 - 插件数据表应该以插件标识为前缀,例如foo插件article表为
foo_article - 表主键应该id为索引
 - 存储引擎统一使用innodb引擎
 - 字符集统一使用utf8mb4_general_ci
 - 数据库ORM使用laravel或者think-orm都可以
 - 时间字段建议使用DateTime
 
代码规范
PSR规范
代码应符合PSR4加载规范
类的命名为大写开头的驼峰式
<?php
namespace plugin\foo\app\controller;
class ArticleController
{
}
类的属性及方法以小写开头驼峰式
<?php
namespace plugin\foo\app\controller;
class ArticleController
{
    /**
     * 不需要鉴权的方法
     * @var array
     */
    protected $noNeedAuth = ['getComments'];
    /**
     * 获得评论
     * @param Request $request
     * @return Response
     * @throws BusinessException
     */
    public function getComments(Request $request): Response
    {
    }
}
注释
类的属性以及函数必须包含注释,包括概述、参数、返回类型
缩进
代码应该使用4个空格符来缩进,而不是使用制表符
流程控制
流程控制关键字(if for while foreach等)后面紧跟一个空格,流程控制代码开始花括号应该与结束圆括号在同一行。
foreach ($users as $uid => $user) {
}
临时变量名
建议以小写开头驼峰式命名(不强制)
$articleCount = 100;