命名的注意事項:
-
命名要有實際含義
-
命名風格保持一致
-
不用拼音命名
-
不用語言關鍵字
適當的使用注釋
-
好的代碼應該是自描述的
-
難以理解的地方加上注釋
-
函數的功能加上注釋說明
-
類的功能和使用方法加注釋
多備份重要的代碼
-
代碼不能只有一份
-
啟用編譯器的自動備份
-
用代碼管理工具備份
堅持字符編碼統一
-
PHP文件編碼==模板編碼==數據庫編碼
使用之前,變量要初始化
-
使用一個未定義的變量,比使用一個定義好的變量要慢8倍以上!
可以想象,PHP引擎會首先按照正常的邏輯來獲取這個變量,然而這個變量不存在,所以PHP引擎需要拋出一個NOTICE,並且進入一段使用未定義變量時應該走的邏輯,然后返回一個新的變量。另外,閱讀代碼的角度講,當你使用一個未定義的變量時,會讓閱讀你代碼的人困惑:“這個變量在哪里初始化的,和之前的代碼有關系嗎?和include進來的文件有關系嗎?”使用NULL ===來代替is_null
-
is_null和NULL ===完全是一樣的效果,但是卻節省了一次函數的調用。
盡量使用===盡量不用==
-
PHP有兩組相等比較運算符===/!==和==/!=,==/!=會有隱式類型轉換,而===/!==會嚴格比較兩個操作時是否類型相同並且值相等。
避免在for循環中計算
-
會導致每次循環都運行計算
strtr替代str_replace
-
strtr函數的效率是str_replace的四倍
優先使用單引號
-
$row['id']的效率是$row[id]的7倍
header頭的編碼
header("Content-type: text/html;charset=utf-8");
php結束標記不要寫
-
純PHP代碼,最好在文件末尾刪除PHP結束標記
測試環境開啟所有錯誤
error_reporting(7)
-
E_ERROR
-
E_WARNING
-
E_PARSE
切記,上線之后要關閉我們的報錯,將我們的錯誤代碼寫入到錯誤日志中,方便查錯
屏蔽錯誤非常低效
-
養錯不用@的好習慣
用FALSE表示錯誤,用NULL表示不存在
-
對於操作類的函數,失敗返回FALSE,表示“操作失敗了”,而對於查詢類的函數,如果找不到想要的值,則應該返回NULL,表示“找不到”。
優先使用PHP 內置函數
-
正則耗時,盡量避免,而采用直接的字符串處理函數代替,如:
filter_var('zhangsan@163.com',FILTER_VALIDATE_EMAIL);
-
有用的PHP內置函數
usort--使用用戶自定義的比較函數對數組中的值進行排序rawurlencode--按照RFC1738對url進行編碼parse_url--解析URL,返回其組成部分http_build_query--生成URL-encode之后的請求字符串exif_imagetype--判斷一個圖像的類型uniqid--生成一個唯一IDget_browser--獲取瀏覽器具有的功能str_word_count--返回字符串中單詞的使用情況
防御式編程思想
-
不要相信外部的一切輸入!所以的輸入都要檢查
使用PDO操作MySQL