根據(jù)PSR基礎(chǔ)規(guī)范和PHP100知名講師張恩民的PHP教學(xué)視頻進(jìn)行整理,所有命名禁止使用阿拉伯?dāng)?shù)字。
目錄、文件和局部變量
-
使用英文名詞、動(dòng)詞,所有字母均使用小寫(xiě),以下劃線作為單詞的分隔。
目錄:upload,templates,install 文件:index.php,config.php 變量:$pay_time,$user_name,$article_del_time
全局常量
-
使用英文名詞、動(dòng)詞,所有字母均使用大寫(xiě),以下劃線作為單詞的分隔。
define('WEBSITE_NAME','erchoc'); define('WEBSITE_URL','http://www.erchoc.com');
數(shù)組變量
使用英文名詞、動(dòng)詞,以下劃線作為單詞的分隔。
-
所有字母均使用小寫(xiě),以_array結(jié)束。
$scopr_array = array(); $book_id_array = array();
對(duì)象變量
使用英文名詞、動(dòng)詞,以下劃線作為單詞的分隔,可以完整采用類名或者簡(jiǎn)化類名,但是必須明確知道是什么類。
-
所有字母均使用小寫(xiě),以_obj結(jié)束。
$user_obj = new userAccount(); $pay_obj = new payOrder();
類的命名
使用英文名詞,以大寫(xiě)字母作為詞的分隔,其他字母均使用小寫(xiě)。
-
名詞的首個(gè)字母小寫(xiě),類名不使用下劃線。
class userAccount{......}
方法命名
使用英文名詞、動(dòng)詞,所有字母均使用小寫(xiě),以下劃線作為單詞的分隔。
-
對(duì)象屬性的命名同理。
class userCar{ public $user_name = 'Erchoc'; public function account_price_car() { ...... } public function add_user_car() { ...... } }
函數(shù)、符號(hào)和運(yùn)算符規(guī)范
-
switch的每個(gè)case塊都要換行再加上break,而default必須存在以處理特殊情況。
switch() { case 'user': ...... break; case 'type': ...... break; default: ...... break; } -
聲明定位風(fēng)格:變量的代碼塊必須等于號(hào)對(duì)其,且初次使用變量必須初始化。
$tableName = ''; $user_article = '';
盡量避免下面的做法:
$tableType;
$get_bookArticle = '';
$user_show = '';
其他基礎(chǔ)規(guī)范
除書(shū)寫(xiě)SQL和需要加入變量的時(shí)候使用雙引號(hào),其他盡可能使用單引號(hào)代替雙引號(hào)。
PHP文件中盡可能不出現(xiàn)HTML語(yǔ)句,尤其是使用模板開(kāi)發(fā),考慮到模板兼容性,HTML文件中也盡可能減少PHP代碼。
通常每個(gè)方法只完成一個(gè)特定的功能(邏輯動(dòng)作事務(wù)),所以方法的命名要能清楚說(shuō)明它的用處,例如使用
email_error_check()代替email_chenk(),用pay_error_check()代替pay_chenk()。自定義方法和變量名不能與系統(tǒng)方法和變量沖突。
HTML的form表單各元素的name和數(shù)據(jù)庫(kù)字段名或者PHP接受變量一致,或者在字段名的基礎(chǔ)上團(tuán)隊(duì)確定表單元素名添加前綴或者后綴。
-
HTML的form表單不要采用缺省方法bool值判斷非零數(shù)值,必須如下顯式測(cè)試。
if($user_pay_num != false) { ...... }
各種注釋的規(guī)范
- 流程控制和無(wú)參函數(shù)在實(shí)現(xiàn)前使用單行注釋,需要特別說(shuō)明的行在行尾添加單行跟蹤注釋。
//用戶檢測(cè)
if($check_obj->username( $username ) == true){......}
$user_name = $_POST['username'];//獲取用戶信息 - 多參數(shù)方法注釋:
/**
* 分頁(yè)預(yù)處理函數(shù)
* sql SQL語(yǔ)句
* page 當(dāng)前頁(yè)數(shù)
* limit 每頁(yè)現(xiàn)實(shí)的數(shù)量
* maxs 查詢總數(shù)
*/
function page_limit($sql, $page='0', $limit=10, $maxs=''){
......
}
數(shù)據(jù)庫(kù)設(shè)計(jì)與操作規(guī)范
- 數(shù)據(jù)庫(kù)名稱使用英文小寫(xiě),以下劃線分隔單詞,以免跨平臺(tái)時(shí)出現(xiàn)的大小寫(xiě)錯(cuò)誤。
- 數(shù)據(jù)表名稱應(yīng)該由物體對(duì)象名稱的小寫(xiě)字母組成,以下劃線分隔單詞。并盡可能對(duì)應(yīng)系統(tǒng)中業(yè)務(wù)類的名稱,如laravel框架的數(shù)據(jù)表名稱為Model類的復(fù)數(shù)小寫(xiě)形式。
- 數(shù)據(jù)表的字段避免使用varchar和text等不定長(zhǎng)的數(shù)據(jù)。
- 查詢多表連接數(shù)據(jù)時(shí)候要求使用全名稱或者別名,即使用
tableName.fieldName代替fieldName。 - SQL語(yǔ)句應(yīng)盡可能符合ANSI92標(biāo)準(zhǔn),避免使用T-SQL或者PL-SQL等特定數(shù)據(jù)庫(kù)對(duì)SQL語(yǔ)言的擴(kuò)充特性。