1. 程式人生 > >php開發規範

php開發規範

一,php程式

1.程式碼第一段一定要先設定錯誤報告等級 

  error_reporting(8);// 個人建議為7 

2.陣列 申明
$row[key] = 'value'; // 不推薦 $row = array(); // 變數一定絕對必須要先宣告! $row['key'] = 'value'; 
$row['12'] = '34';// 陣列的key一定絕對要用雙引號或單引號包起來 
3.變數申明
if( $row['key'] ) { // 不推薦 
$string = 'xxxx'; 

if( $string == 'xxx' ) { 
echo 'xxx'; 

$string = '';       //推薦


if( $row['key'] ) { 
$string = 'xxxx'; 

if( 'xx' == $string) { 
echo 'xxx'; 

 4.不要隨便就複製變數

有時候為了使 PHP 程式碼更加整潔,一些 PHP 新手(包括我)會把預定義好的變數複製到一個名字更簡短的變數中,其實這樣做的結果是增加了一倍的記憶體消耗,只會使程式更加慢。試想一下,在下面的例子中,如果使用者惡意插入 512KB 位元組的文字到文字輸入框中,這樣就會導致 1MB 的記憶體被消耗!

BAD:$description = $_POST['description'];echo $description;

GOOD:echo $_POST['description'];

5. 對字串使用單引號

PHP 引擎允許使用單引號和雙引號來封裝字串變數,但是這個是有很大的差別的!使用雙引號的字串告訴 PHP 引擎首先去讀取字串內容,查詢其中的變數,並改為變數對應的值。一般來說字串是沒有變數的,所以使用雙引號會導致效能不佳。最好是使用字串連線而不是雙引號字串。BAD:$output = "This is a plain string";GOOD:$output = 'This is a plain string';BAD:$type = "mixed";$output = "This is a $type string";GOOD:$type = 'mixed';$output = 'This is a ' . $type .' string';

6.不要在 echo 中使用連線符

不知道在用 惡臭輸出多個變數的時候,其實可以使用逗號來分開的,而不必用字串先把他們先連起來,如下面的第一個例子中,由於使用了連線符就會有效能問題,因為這樣就會需要 PHP 引擎首先把所有的變數連線起來,然後在輸出,而在第二個例子中,PHP 引擎就會按照循序輸出他們。BAD:echo 'Hello, my name is' . $firstName . $lastName . ' and I live in ' . $city;GOOD:echo 'Hello, my name is' , $firstName , $lastName , ' and I live in ' , $city;

7.小括號()規則

不要把小括號和關鍵詞、方法名、方法引數緊貼在一起,要用一個空格分隔,例:
if ( $condition ) //推薦

{
 ...
}

8.if ..else規則

if .. else ... 規則

通常最好有一個else塊以用於處理未處理到的或未知的其他情況,即使條件處理語句
只有一個也必須使用大括號{},例:

if ( $condition1 )
{
 ...

else if ( $condition2 )
{
 ...
 ...

else
{
 ...
}

儘可能避免以下使用方式,例:

if ( $condition1 )
 ...
else
 ...

9.變數名規範

區域性變數命名

使用英文名詞、動詞,以大寫字母作為單詞的分隔,其他的字母均使用小寫,單詞的
首個字母使用小寫,不使用下劃線,例:

$repeatCount = '';
$delUserSql  = '';

全域性常量命名

使用英文名詞、動詞,所有字母都使用大寫,以下劃線分隔每個單詞,例:

define( 'WEBSITE_NAME', '名稱' );
define( 'WEBSITE_URL',  '地址' )

陣列變數命名

使用英文名詞、動詞,以大寫字母作為單詞的分隔,其他的字母均使用小寫,單詞的首
個字母使用小寫,不使用下劃線,以字串Array為字尾,例:

$scopeArray  = array();
$bookIdArray = array();

靜態變數命名

使用英文名詞、動詞,以大寫字母作為單詞的分隔,其他的字母均使用小寫,單詞的首
個字母使用小寫,不使用下劃線,以字串Static為字尾,例:

function getDirectoryFile()
{
 static $fileArrayStatic = '';
 static $fileNumStatic   = '';
 ...
}

物件變數命名

使用類名稱為變數字首,所有字母都使用大寫,以字串_OBJECT為字尾,例:

$USERACCOUNT_OBJECT   = new UserAccount();
$PAINTINGORDER_OBJECT = new PaintingOrder();

二,資料庫

資料庫的設計必須符合三個正規化(極端要求常用高速時考慮單獨設定記錄表除外)。

資料庫名稱應該由概述專案內容的小寫英文名片語成,以下劃線分隔單詞,
避免跨平臺時可能出現的大小寫錯誤。

資料表名稱應該由物件物件名稱的小寫英文名片語成(儘可能對應系統中的業務類名稱),
以下劃線分隔單詞,避免跨平臺時可能出現的大小寫錯誤。

資料表的欄位應避免使用varchar、text等不定長的型別,時間資訊的欄位使用unix tiemstamp型別儲存

查詢資料時禁止使用*萬用字元避免佔用資源加速處理速度,儘量避免使用臨時表。

查詢資料連線多表時各資源應該使用全名稱,即tableName.fieldName,而不是fieldName。

SQL語句應儘可能符合ansi92標準,避免使用特定資料庫對SQL語言的擴充特性。

開發結束後,必須針對SQL查詢語句的條件語句部分(where)新增索引,
須匹配多個條件的應該使用聚合索引。

索引的組成應由左至右匹配條件語句的順序。

嚴禁盲目新增索引,避免減慢資料插入的速度、增大佔用空間及減慢查詢速度。

每當資料庫(表)發生結構性變化時須登記儲存;日常須定時(不超過三個工作日)
備份資料庫結構及其資料。