版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
PHP編碼規(guī)范一、文件格式
1.對于只含有php代碼的文件,我們將在文件結尾處忽略掉"?>"。這是為了防止多余的空格或者其它字符影響到代碼。例如:<?php$foo='foo';2.縮進應該能夠反映出代碼的邏輯結果,盡量使用四個空格,禁止使用制表符TAB,因為這樣能夠保證有跨客戶端編程器軟件的靈活性。例如:if(1==$x){
$indented_code=1;
if(1==$new_line){
$more_indented_code=1;
}}3.變量賦值必須保持相等間距和排列。例如:$variable='demo';$var
='demo2';4.每行代碼長度應控制在80個字符以內,最長不超過120個字符。因為linux讀入文件一般以80列為單位,就是說如果一行代碼超過80個字符,那么系統(tǒng)將為此付出額外操作指令。這個雖然看起來是小問題,但是對于追求完美的程序員來說也是值得注意并遵守的規(guī)范。5.每行結尾不允許有多余的空格。
二、命名約定
1.類文件都是以“.class.php“為后綴,且類文件名只允許字母,使用駝峰法命名,并且首字母大寫,例如:DbMysql.class.php。2.配置和函數(shù)等其他類庫文件之外的文件一般是分別以“.inc.php“和”.php“為后綴,且文件名命名使用小寫字母和下劃線的方式,多個單詞之間以下劃線分隔,例如config.inc.php,common.php,install_function.php。3.確保文件的命名和調用大小寫一致,是由于在類Unix系統(tǒng)上面,對大小寫是敏感的。4.類名和文件名一致(包括上面說的大小寫一致),且類名只允許字母,例如UserAction類的文件命名是UserAction.class.php,InfoModel類的文件名是InfoModel.class.php。5.控制器類以Action為后綴,例如UserAction、InfoAction,模型類以Model為后綴,例如UserModel、InfoModel,其他類也分別以相應分類為后綴,例如Service、Widget。6.方法名只允許由字母組成,下劃線是不允許的,首字母要小寫,其后每個單詞首字母要大寫,即所謂的“駝峰法命名”規(guī)則,且越詳細越好,應該能夠描述清楚該方法的功能,例如switchModel、findPage。7.屬性的命名只允許由字母組成,下劃線是不允許的,首字母要小寫,其后每個單詞首字母要大寫,即所謂的“駝峰法命名”規(guī)則,例如tablePrefix、tableName。8.對于對象成員的訪問,我們必須始終使用“get”和“set”方法。例如:classFoo{
protected$_testObj;
publicfunctiongetTestObj()
{
return$this->_testObj;
}
publicfunctionsetTestObj($testObj)
{
$this->testObj=$_testObj;
}}9.當類成員方法被聲明為private時,必須分別以雙下劃線"__"為開頭;被聲明為protected時,必須分別以單下劃線"_"為開頭;一般情況下的方法不含下劃線。例如:classFoo{
privatefunction__example()
{
//...
}
protectedfunction_example()
{
//...
}
publicfunctionexample()
{
//...
}}10.如果我們需要把一些經(jīng)常使用的方法定義為全局函數(shù),那么應該把它們以靜態(tài)(static)的形式定義在類中。例如:classThink{
//...
staticpublicfunctionautoload($classname)
{
//...
}}11.被聲明為private的類成員屬性必須由雙下劃線"__"作為開頭;被聲明為protected的類成員屬性必須由下劃線"_"作為開頭;而聲明為public的成員屬性則在任何時候都不允許含有下劃線。12.函數(shù)的命名使用小寫字母和下劃線的方式,且越詳細越好,應該能夠描述清楚該函數(shù)的功能,例如get_client_ip。13.當方法或函數(shù)參數(shù)不一定需要被賦值的時候,用"null"來代替"false"作為函數(shù)參數(shù)的默認值,除非該參數(shù)是boolean值。14.變量只允許由小寫字母和下劃線組成,且建議用描述性的變量的命名,越詳細越好,以至于像$i或$n等等都是不鼓勵使用的。15.類中的常量constant和全局范圍內常量define,只能由大寫字母和下劃線組成,各個單詞之間以下劃線分割。16.boolean值和null值都采用小寫。
三、編碼風格
1.php代碼必須以完整的形式來定界(<?php…?>),即不要使用php短標簽(<?…?>),且保證在關閉標簽后不要有任何空格。2.當一個字符串是純文本組成的時候(即不含有變量),則必須總是以單引號(')作為定界符。例如:$a='ExampleString';3.變量替換中的變量只允許用$+變量名的形式。例如:$greeting="Hello$name,welcomeback!";
//允許$greeting="Hello{$name},welcomeback!";//允許$greeting="Hello${name},welcomeback!";//不允許
當用點號"."連接各字符串的時候,字符串與點號間必須用一個空格隔開,且允許把它分割成多行以增強可讀性。在這種情況下,點號"."必須與等于號"="對齊。例如:$sql="SELECT`id`,`name`"."FROM`people`"
."WHERE`name`='Susan'"
."ORDERBY`name`ASC";
當用array類型符號來構造數(shù)組的時候,必須在每個逗號之后加上一個空格來增強可讀性。例如:$sampleArray=array(1,2,3,'Think','SNS');4.當使用array類型符聲明關聯(lián)數(shù)組的時候,我們鼓勵把它分成多個行,只是我們必須同時保證每行的鍵與值的對齊,以保持美觀。例如:$sampleArray=array(
'firstKey'
=>'firstValue',
'secondKey'=>'secondValue'
);5.大括號的開始必須在類名的下一行頂格。例如:classThink{
//...}6.類中的所有代碼都必須用四個空格來進行縮進。7.每個php文件只允許聲明一個類。在類文件里面寫其它代碼是允許的,但并不鼓勵這樣做。假如真要附加代碼的話,必須用空行來分隔。8.任何類變量的聲明都必須放在類頂部,先于任何函數(shù)的聲明。9.不允許用var符號來聲明變量,類成員變量必須以private,protected和public來聲明。其次,把類成員聲明為public而直接引用雖然是允許的,但通常更好的方法是使用get和set方法來訪問類成員。10.方法必須總是用private,protected或者public來聲明其作用域。11.靜態(tài)static方法應該聲明其作用域,且不應該再被聲明為private私有,而應該為protected或者public,如果只是不想被子類繼承,則應該用final聲明它們。12.函數(shù)或方法的初始大括號應該在函數(shù)聲明的下一行頂格。例如:
functionget_client_ip(){
//…}13.在函數(shù)或方法名與參數(shù)括號之間不允許出現(xiàn)多余的空格。例如:functionget_client_ip(){
//…}14.引用只允許定義在函數(shù)參數(shù)中,實時傳遞引用是禁止的。例如://引用定義在函數(shù)參數(shù)-允許的functiondefineRefInMethod(&$a){
$a='a';}
defineRefInMethod($b);echo$b;//'a'//實時傳遞引用-禁止的functioncallTimePassRef($a){
$a='a';}callTimePassRef(&$c);echo$c;//'a'15.函數(shù)或方法返回值不可以用括號包住,不然會降低可讀性,而且假如以后函數(shù)修改為返回引用的話,這將會拋出一個異常。16.鼓勵盡量使用類型提示,特別是在模塊設計中。例如:classFoo{
publicfunctionfoo(SInterface$object)
{
}
publicfunctionbar(array$options)
{
}}17.函數(shù)和方法參數(shù)必須用逗號+空格來分隔。18.對于參數(shù)為數(shù)組的函數(shù),參數(shù)中的數(shù)組應該分成多行以增強可讀性。例如:threeArguments(array(1,2,3),2,3);threeArguments(array(1,2,3,'Think',
'SNS',$a,$b,$c,
56.44,$d,500),2,3);19.
基于"if","else"和"elseif"的條件控制里,我們必須用空格間隔開語句和括號,大括號的開始"{"必須與條件控制語句位于同一行,結束"}"必須總是獨占一行且頂格,控制流程內容必須用四個空格進行縮進,且不使用"elseif"。if($condition){
//...}elseif($_condition){
//...}else{
//...}20.在條件控制語句的條件括號內,必須用空格將操作符與其它元素隔開。如果遇到很長的邏輯判斷,則鼓勵用內嵌括號來分割各個邏輯。例如:if(($a!=2)and($b==1)){
$a=$b;}21."switch"條件控制語句中,必須用空格將待測參數(shù)與其它元素分隔開。例如:switch($num){
//…}22.
"switch"語句的內容必須以四個空格縮進,"case"條件控制的內容必須再加四個空格進行縮進。例如:switch($indentedSpaces){
case2:
echo"錯誤";
break;
case4:
echo"正確"
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年路磚項目可行性研究報告
- 2024年超臨界流體萃取裝置項目可行性研究報告
- 2025至2031年中國控制旋鈕行業(yè)投資前景及策略咨詢研究報告
- 2025-2030年(全新版)中國藍莓果汁行業(yè)市場運營現(xiàn)狀及投資前景規(guī)劃研究報告
- 2025-2030年中國靜力水準行業(yè)運行狀況與前景趨勢分析報告
- 2025-2030年中國鐵路電氣化線路器材產(chǎn)業(yè)發(fā)展前景調研及投資戰(zhàn)略分析報告
- 2025年度企業(yè)車庫租賃及員工停車服務合同
- 寵物攝影與拍攝技巧考核試卷
- 2025年度電子支付貨款欠款合同范本下載
- 2025年度貨車司機勞動合同(含物流信息平臺操作培訓)
- 二年級下冊加減混合豎式練習360題附答案
- GB/T 21709.5-2008針灸技術操作規(guī)范第5部分:拔罐
- 大三上-診斷學復習重點
- 應收賬款的管理培訓課件
- 2021年道路交通安全法期末考試試題含答案
- 股東變更情況報告表
- 自帶藥物治療告知書
- 房產(chǎn)中介門店6S管理規(guī)范
- 吞咽解剖和生理研究
- TSG11-2020 鍋爐安全技術規(guī)程
- 異地就醫(yī)備案個人承諾書
評論
0/150
提交評論