應(yīng)用插件開(kāi)發(fā)規(guī)范
應(yīng)用插件要求
- 插件不能包含侵權(quán)的代碼、圖標(biāo)、圖片等
- 插件源碼保證是完整的代碼,且不能加密
- 插件必須是完整的功能,不能是簡(jiǎn)單的功能
- 必須提供完整的功能介紹、文檔
- 插件不能包含子市場(chǎng)
- 插件內(nèi)不能任何文字或推廣連接
應(yīng)用插件標(biāo)識(shí)
每個(gè)應(yīng)用插件都有一個(gè)唯一標(biāo)識(shí),這個(gè)標(biāo)識(shí)由字母組成。這個(gè)標(biāo)識(shí)影響應(yīng)用插件所在源碼目錄名、類(lèi)的命名空間、插件數(shù)據(jù)庫(kù)表前綴。
假設(shè)開(kāi)發(fā)者以foo為插件標(biāo)識(shí),那么插件源碼所在目錄為{主項(xiàng)目}/plugin/foo
,相應(yīng)的插件的命名空間為plugin\foo
,表前綴為foo_
。
由于標(biāo)識(shí)全網(wǎng)唯一,所以開(kāi)發(fā)者在開(kāi)發(fā)前需要檢測(cè)標(biāo)識(shí)是否可用,檢測(cè)地址應(yīng)用標(biāo)識(shí)檢測(cè)。
數(shù)據(jù)庫(kù)
- 表名由小寫(xiě)字母
a-z
以及下劃線(xiàn)_
組成 - 插件數(shù)據(jù)表應(yīng)該以插件標(biāo)識(shí)為前綴,例如foo插件article表為
foo_article
- 表主鍵應(yīng)該id為索引
- 存儲(chǔ)引擎統(tǒng)一使用innodb引擎
- 字符集統(tǒng)一使用utf8mb4_general_ci
- 數(shù)據(jù)庫(kù)ORM使用laravel或者think-orm都可以
- 時(shí)間字段建議使用DateTime
代碼規(guī)范
PSR規(guī)范
代碼應(yīng)符合PSR4加載規(guī)范
類(lèi)的命名為大寫(xiě)開(kāi)頭的駝峰式
<?php
namespace plugin\foo\app\controller;
class ArticleController
{
}
類(lèi)的屬性及方法以小寫(xiě)開(kāi)頭駝峰式
<?php
namespace plugin\foo\app\controller;
class ArticleController
{
/**
* 不需要鑒權(quán)的方法
* @var array
*/
protected $noNeedAuth = ['getComments'];
/**
* 獲得評(píng)論
* @param Request $request
* @return Response
* @throws BusinessException
*/
public function getComments(Request $request): Response
{
}
}
注釋
類(lèi)的屬性以及函數(shù)必須包含注釋?zhuān)ǜ攀?、參?shù)、返回類(lèi)型
縮進(jìn)
代碼應(yīng)該使用4個(gè)空格符來(lái)縮進(jìn),而不是使用制表符
流程控制
流程控制關(guān)鍵字(if for while foreach等)后面緊跟一個(gè)空格,流程控制代碼開(kāi)始花括號(hào)應(yīng)該與結(jié)束圓括號(hào)在同一行。
foreach ($users as $uid => $user) {
}
臨時(shí)變量名
建議以小寫(xiě)開(kāi)頭駝峰式命名(不強(qiáng)制)
$articleCount = 100;