五月综合缴情婷婷六月,色94色欧美sute亚洲线路二,日韩制服国产精品一区,色噜噜一区二区三区,香港三级午夜理伦三级三

您現(xiàn)在的位置: 365建站網(wǎng) > 365文章 > PHPCMS開發(fā)文檔里看到PHP編碼規(guī)范

PHPCMS開發(fā)文檔里看到PHP編碼規(guī)范

文章來(lái)源:365jz.com     點(diǎn)擊數(shù):451    更新時(shí)間:2009-12-20 00:35   參與評(píng)論

注:這是從PHPCMS開發(fā)文檔里看到編碼規(guī)范,雖名為PHPCMS的開發(fā)規(guī)范,但我覺得所有的PHP編程都該如此。寫了那么多PHP,很多編碼對(duì)照這規(guī)范都感覺欠缺很多,今后一定要對(duì)照糾正。

Phpcms 編碼規(guī)范
1. 引言…. 2
2. 適用范圍…. 2
3. 標(biāo)準(zhǔn)化的重要性和好處…. 3
4. PHP編碼規(guī)范與原則…. 3
4.1. 代碼標(biāo)記… 3
4.2. 注釋… 3
4.3. 書寫規(guī)則… 4
4.3.1. 縮進(jìn)… 4
4.3.2. 大括號(hào){}、if和switch. 4
4.3.3. 運(yùn)算符、小括號(hào)、空格、關(guān)鍵詞和函數(shù)… 5
4.3.4. 函數(shù)定義… 6
4.3.5. 引號(hào)… 6
4.3.6. 多語(yǔ)言問(wèn)題… 7
4.4. 命名原則… 8
4.4.1. 變量、對(duì)象、函數(shù)名… 8
4.4.2. 常量… 8
4.5. 變量的初始化與邏輯檢查… 8
4.6. 安全性… 9
4.7. 兼容性… 9
4.8. 代碼重用… 10
4.9. 其他細(xì)節(jié)問(wèn)題… 10
4.9.1. 包含調(diào)用… 10
4.9.2. 錯(cuò)誤報(bào)告級(jí)別… 11
5. 數(shù)據(jù)庫(kù)設(shè)計(jì)…. 11
5.1. 字段… 11
5.1.1. 表和字段命名… 11
5.1.2. 字段結(jié)構(gòu)… 11
5.2. SQL語(yǔ)句… 12
5.3. 性能與效率… 13
5.3.1. 定長(zhǎng)與變長(zhǎng)表… 13
5.3.2. 運(yùn)算與檢索… 13
5.3.3. 結(jié)構(gòu)優(yōu)化與索引優(yōu)化… 14
5.3.4. 查詢優(yōu)化… 14
5.3.5. 兼容性問(wèn)題… 16
6. 模板設(shè)計(jì)…. 16
6.1. 代碼標(biāo)記… 16
6.2. 書寫規(guī)則… 16
6.2.1. HTML. 16
6.2.2. 變量… 16
6.2.3. 語(yǔ)言元素… 17
6.2.4. 縮進(jìn)… 17
7. 文件與目錄…. 17
7.1. 文件命名… 17
7.2. 目錄命名… 18
7.3. 空目錄索引… 18

1. 引言
本規(guī)范由編程原則組成,融合并提煉了開發(fā)人員長(zhǎng)時(shí)間積累下來(lái)的成熟經(jīng)驗(yàn),意在幫助形成良好一致的編程風(fēng)格。以達(dá)到事半功倍的效果,如果有需要本文檔會(huì)不定期更新。
版權(quán): 陜西玖肆陸陸網(wǎng)絡(luò)科技有限公司,保留所有權(quán)利
最后更新日期:年11月20日 2006

2. 適用范圍
如無(wú)特殊說(shuō)明,以下規(guī)則要求完全適用于phpcms項(xiàng)目,同時(shí)也可大部分適用于公司其他PHP項(xiàng)目。

3. 標(biāo)準(zhǔn)化的重要性和好處
當(dāng)一個(gè)軟件項(xiàng)目嘗試著遵守公共一致的標(biāo)準(zhǔn)時(shí),可以使參與項(xiàng)目的開發(fā)人員更容易了解項(xiàng)目中的代碼、弄清程序的狀況。使新的參與者可以很快的適應(yīng)環(huán)境,防止部分參與者出于節(jié)省時(shí)間的需要,自創(chuàng)一套風(fēng)格并養(yǎng)成終生的習(xí)慣,導(dǎo)致其它人在閱讀時(shí)浪費(fèi)過(guò)多的時(shí)間和精力。而且在一致的環(huán)境下,也可以減少編碼出錯(cuò)的機(jī)會(huì)。缺陷是由于每個(gè)人的標(biāo)準(zhǔn)不同,所以需要一段時(shí)間來(lái)適應(yīng)和改變自己的編碼風(fēng)格,暫時(shí)性的降底了工作效率。從使項(xiàng)目長(zhǎng)遠(yuǎn)健康的發(fā)展以及后期更高的團(tuán)隊(duì)工作效率來(lái)考慮暫時(shí)的工作效率降低是值得的,也是必須要經(jīng)過(guò)的一個(gè)過(guò)程。標(biāo)準(zhǔn)不是項(xiàng)目成功的關(guān)鍵,但可以幫助我們?cè)趫F(tuán)隊(duì)協(xié)作中有更高的效率并且更加順利的完成既定的任務(wù)。
1. 程序員可以了解任何代碼,弄清程序的狀況
2. 新人可以很快的適應(yīng)環(huán)境
3. 防止新接觸PHP的人出于節(jié)省時(shí)間的需要,自創(chuàng)一套風(fēng)格并養(yǎng)成終生的習(xí)慣
4. 防止新接觸PHP的人一次次的犯同樣的錯(cuò)誤
5. 在一致的環(huán)境下,人們可以減少犯錯(cuò)的機(jī)會(huì)
6. 程序員們有了一致的敵人

4. PHP編碼規(guī)范與原則

4.1.代碼標(biāo)記
PHP程序可以使用或來(lái)界定 PHP 代碼,在HTML頁(yè)面中嵌入純變量時(shí),可以使用這樣的形式。
近年來(lái)PHP開發(fā)組一直倡導(dǎo)代碼規(guī)范化和標(biāo)準(zhǔn)化,未來(lái)版本PHP可能會(huì)開始不建議使用甚至取消和這種速記形式,因此為了加強(qiáng)程序兼容性,在發(fā)布之前我們將統(tǒng)一把

4.2.注釋
注釋是對(duì)于那些容易忘記作用的代碼添加簡(jiǎn)短的介紹性內(nèi)容。請(qǐng)使用 C 樣式的注釋“/* */”和標(biāo)準(zhǔn) C++ 注釋“//”。

程序開發(fā)中難免留下一些臨時(shí)代碼和調(diào)試代碼,此類代碼必須添加注釋,以免日后遺忘。所有臨時(shí)性、調(diào)試性、試驗(yàn)性的代碼,必須添加統(tǒng)一的注釋標(biāo)記“//debug”并后跟完整的注釋信息,這樣可以方便在程序發(fā)布和最終調(diào)試前批量檢查程序中是否還存在有疑問(wèn)的代碼。例如:
$num = 1;
$flag = TRUE; //debug 這里不能確定是否需要對(duì)$flag進(jìn)行賦值
if(empty($flag)) {
//Statements
}

4.3.書寫規(guī)則

4.3.1. 縮進(jìn)
每個(gè)縮進(jìn)的單位約定是一個(gè)TAB(8個(gè)空白字符寬度),需每個(gè)參與項(xiàng)目的開發(fā)人員在編輯器(UltraEdit、EditPlus、Zend Studio等)中進(jìn)行強(qiáng)制設(shè)定,以防在編寫代碼時(shí)遺忘而造成格式上的不規(guī)范。
本縮進(jìn)規(guī)范適用于PHP、JavaScript中的函數(shù)、類、邏輯結(jié)構(gòu)、循環(huán)等。

4.3.2. 大括號(hào){}、if和switch
首括號(hào)與關(guān)鍵詞同行,尾括號(hào)與關(guān)鍵字同列;
if結(jié)構(gòu)中,if和elseif與前后兩個(gè)圓括號(hào)同行,左右各一個(gè)空格,所有大括號(hào)都單獨(dú)另起一行。另外,即便if后只有一行語(yǔ)句,仍然需要加入大括號(hào),以保證結(jié)構(gòu)清晰;
switch結(jié)構(gòu)中,通常當(dāng)一個(gè)case塊處理后,將跳過(guò)之后的case塊處理,因此大多數(shù)情況下需要添加break。break的位置視程序邏輯,與case同在一行,或新起一行均可,但同一switch體中,break的位置格式應(yīng)當(dāng)保持一致。
以下是符合上述規(guī)范的例子:
If ($condition)
{
switch ($var)
{
case 1: echo ‘var is 1’; break;
case 2: echo ‘var is 2’; break;
default: echo ‘var is neither 1 or 2’; break;
}
}
else
{
switch ($str)
{
case ‘a(chǎn)bc’:
$result = ‘a(chǎn)bc’;
break;
default:
$result = ‘unknown’;
break;
}
}

4.3.3. 運(yùn)算符、小括號(hào)、空格、關(guān)鍵詞和函數(shù)
每個(gè)運(yùn)算符與兩邊參與運(yùn)算的值或表達(dá)式中間要有一個(gè)空格,唯一的特例是字符連接運(yùn)算符號(hào)兩邊不加空格;
左括號(hào)“(” 應(yīng)和函數(shù)關(guān)鍵詞緊貼在一起,除此以外應(yīng)當(dāng)使用空格將“(”同前面內(nèi)容分開;
右括號(hào)“)”除后面是“)”或者“.”以外,其他一律用空格隔開它們;
除字符串中特意需要,一般情況下,在程序以及HTML中不出現(xiàn)兩個(gè)連續(xù)的空格;
任何情況下,PHP程序中不能出現(xiàn)空白的帶有TAB或空格的行,即:這類空白行應(yīng)當(dāng)不包含任何TAB或空格。同時(shí),任何程序行尾也不能出現(xiàn)多余的TAB或空格。多數(shù)編輯器具有自動(dòng)去除行尾空格的功能,如果習(xí)慣養(yǎng)成不好,可臨時(shí)使用它,避免多余空格產(chǎn)生;
每段較大的程序體,上、下應(yīng)當(dāng)加入空白行,兩個(gè)程序塊之間只使用1個(gè)空行,禁止使用多行。
程序塊劃分盡量合理,過(guò)大或者過(guò)小的分割都會(huì)影響他人對(duì)代碼的閱讀和理解。一般可以以較大函數(shù)定義、邏輯結(jié)構(gòu)、功能結(jié)構(gòu)來(lái)進(jìn)行劃分。少于15行的程序塊,可不加上下空白行;
說(shuō)明或顯示部分中,內(nèi)容如含有中文、數(shù)字、英文單詞混雜,應(yīng)當(dāng)在數(shù)字或者英文單詞的前后加入空格。

根據(jù)上述原則,以下舉例說(shuō)明正確的書寫格式:
$result = (($a + 1) * 3 / 2 + $num)).’Test’;
$condition ? func1($var) : func2($var);
$condition ? $long_statement
: $another_long_statement;
if ($flag)
{

//Statements
//More than 15 lines
}
Showmessage(‘請(qǐng)使用 restore.php 工具恢復(fù)數(shù)據(jù)?!?;

4.3.4. 函數(shù)定義
l 參數(shù)的名字和變量的命名規(guī)范一致;
l 函數(shù)定義中的左小括號(hào),與函數(shù)名緊挨,中間無(wú)需空格;
l 開始的左大括號(hào)另起一行;
l 具有默認(rèn)值的參數(shù)應(yīng)該位于參數(shù)列表的后面;
l 函數(shù)調(diào)用與定義的時(shí)候參數(shù)與參數(shù)之間加入一個(gè)空格;
l 必須仔細(xì)檢查并切實(shí)杜絕函數(shù)起始縮進(jìn)位置與結(jié)束縮進(jìn)位置不同的現(xiàn)象。

例如,符合標(biāo)準(zhǔn)的定義:
function authcode($string, $operation, $key = '')
{
if($flag)
{
//Statement
}
//函數(shù)體
}

不符合標(biāo)準(zhǔn)的定義:
function authcode($string,$operation,$key = '') {
//函數(shù)體
}

4.3.5. 引號(hào)
PHP中單引號(hào)和雙引號(hào)具有不同的含義,最大的幾項(xiàng)區(qū)別如下:
單引號(hào)中,任何變量($var)、特殊轉(zhuǎn)義字符(如“\t \r \n”等)不會(huì)被解析,因此PHP的解析速度更快,轉(zhuǎn)義字符僅僅支持“\’”和“\\”這樣對(duì)單引號(hào)和反斜杠本身的轉(zhuǎn)義;
雙引號(hào)中,變量($var)值會(huì)代入字符串中,特殊轉(zhuǎn)義字符也會(huì)被解析成特定的單個(gè)字符,還有一些專門針對(duì)上述兩項(xiàng)特性的特殊功能性轉(zhuǎn)義,例如“\$”和“{$array[‘key’]}。這樣雖然程序編寫更加方便,但同時(shí)PHP的解析也很慢;
數(shù)組中,如果下標(biāo)不是整型,而是字符串類型,請(qǐng)務(wù)必用單引號(hào)將下標(biāo)括起,正確的寫法為$array[‘key’],而不是$array[key],因?yàn)椴徽_的寫法會(huì)使PHP解析器認(rèn)為key是一個(gè)常量,進(jìn)而先判斷常量是否存在,不存在時(shí)才以“key”作為下標(biāo)帶入表達(dá)式中,同時(shí)出發(fā)錯(cuò)誤事件,產(chǎn)生一條Notice級(jí)錯(cuò)誤。
因此,在絕大多數(shù)可以使用單引號(hào)的場(chǎng)合,禁止使用雙引號(hào)。依據(jù)上述分析,可以或必須使用單引號(hào)的情況包括但不限于下述:
l 字符串為固定值,不包含“\t”等特殊轉(zhuǎn)義字符;
l 數(shù)組的固定下標(biāo),例如$array[‘key’];
l 表達(dá)式中不需要帶入變量,例如$string = ‘test’;,而非$string = “test$var”;
例外的,在正則表達(dá)式(用于preg_系列函數(shù)和ereg系列函數(shù))中,phpcms全部使用雙引號(hào),這是為了人工分析和編寫的方便,并保持正則表達(dá)式的統(tǒng)一,減少不必要的分析混淆。
數(shù)據(jù)庫(kù)SQL語(yǔ)句中,所有數(shù)據(jù)都不得加單引號(hào),但是在進(jìn)行sql查詢之前都必須經(jīng)過(guò)intval函數(shù)處理;所有字符串都必須加單引號(hào),以避免可能的注入漏洞和SQL錯(cuò)誤。正確的寫法為:
$catid = intval($catid);
SELECT * FROM phpcms_member WHERE username=’ PHPCMS開發(fā)文檔里看到PHP編碼規(guī)范 - 站長(zhǎng)學(xué)院 中國(guó)站長(zhǎng) 未來(lái)的中國(guó)站長(zhǎng), 更加專注中國(guó)網(wǎng)絡(luò)的發(fā)展 廣告服務(wù) | 最新更新 | 加入收藏 | 設(shè)為首頁(yè)

  • 首頁(yè)
  • 互聯(lián)網(wǎng)軟件
  • IDC產(chǎn)品
  • 站長(zhǎng)交易
  • 項(xiàng)目外包
  • 商業(yè)信息
  • 招聘求職
  • 公司庫(kù)
  • 資 訊
  • 下 載
  • 學(xué) 院
  • 工 具
  • 論 壇
熱門關(guān)鍵字:CSS布局配色參考Dreamweaver8 apacheApacheIIS6AjaxWML 首頁(yè) | HOME 站長(zhǎng)之家 站長(zhǎng)入門 運(yùn)營(yíng)策劃 搜索優(yōu)化 網(wǎng)站盈利 網(wǎng)頁(yè)設(shè)計(jì) Html CSS/Xhtml Dhtml WAP Dreamweaver 設(shè)計(jì)原理 平面動(dòng)畫 Photoshop Firework Flash 網(wǎng)站開發(fā) Asp .Net Php Jsp Mssql Access Oracle Mysql 服務(wù)器 Fressbsd LINUX Windows
視頻教程 常用手冊(cè) 常用廣告代碼 js特效代碼
站長(zhǎng)學(xué)院 >> 網(wǎng)站開發(fā)技術(shù)教程 >> php教程  >> PHPCMS開發(fā)文檔里看到PHP編碼規(guī)范

PHPCMS開發(fā)文檔里看到PHP編碼規(guī)范

2009-12-17 20:54:00查看學(xué)習(xí)心得 {GetProperty(Content)} 本文作者:未知

如對(duì)本文有疑問(wèn),請(qǐng)?zhí)峤坏浇涣髡搲?,廣大熱心網(wǎng)友會(huì)為你解答??! 點(diǎn)擊進(jìn)入論壇

發(fā)表評(píng)論 (451人查看,0條評(píng)論)
請(qǐng)自覺遵守互聯(lián)網(wǎng)相關(guān)的政策法規(guī),嚴(yán)禁發(fā)布色情、暴力、反動(dòng)的言論。
昵稱:
最新評(píng)論
------分隔線----------------------------

其它欄目

· 建站教程
· 365學(xué)習(xí)

業(yè)務(wù)咨詢

· 技術(shù)支持
· 服務(wù)時(shí)間:9:00-18:00
365建站網(wǎng)二維碼

Powered by 365建站網(wǎng) RSS地圖 HTML地圖

copyright © 2013-2024 版權(quán)所有 鄂ICP備17013400號(hào)