PHP高效書寫方式

由于 PHP 代碼書寫的靈活性,每個人都有自己的書寫習慣,避免低效的書寫方式,是一個有追求的程序員的義務。

  1. 字符串使用單引號''包裹。雙引號會去查找字符串中的變量,并解析。
  2. 使用雙引號帶變量的方式處理字符串鏈接"this is a $string",避免使用.操作符鏈接字符串。. 每次鏈接都需要重新分配內(nèi)容空間存儲字符串。
  3. 所有變量使用前必須先定義,獲取未定義的變量效率低下。
  4. 遞增局部變量的速度最快。比全局變量快 2 倍,比類屬性快 3 倍,比未定義的變量快 9 倍。
  5. 盡可能靜態(tài)化函數(shù),靜態(tài)化的函數(shù)調(diào)用性能遠高于普通函數(shù)。
  6. $data['id'] 的速度比 $data[id] 的速度快得多。
  7. 在 for 循環(huán)之前確定最大循環(huán)次數(shù), 不要每次循環(huán)時計算最大值。
  8. 及時注銷不使用的大數(shù)據(jù)變量,以便釋放內(nèi)存。
  9. 盡量避免使用__get、__set__autoload等魔術(shù)方法的使用。
  10. include、require 文件時盡量使用絕對路徑,相對路徑最終都是解析成絕對路徑,并且當 includerequire 文件時沒有給出目錄,則程序會去 include_path 中查找文件,找不到才報出警告或錯誤。
  11. 盡可能使用函數(shù)操作來代替正則表達式。
  12. str_replace 函數(shù)比 preg_replace 函數(shù)快,strtr 函數(shù)的效率是 str_replace 函數(shù)的四倍。
  13. @屏蔽錯誤消息的做法非常低效,且不易查找錯誤,應禁止使用。
  14. 使用 switch ... case 的結(jié)構(gòu)來代替 if ... elseif ... else,性能更高些。
  15. 使用 foreach 代替 while、for循環(huán),foreach效率更高。
  16. 使用 isset() 代替is_empty()判斷變量是否存在。判斷字符串長度也可以使用isset(),如:
$str = 'abc';
var_dump(isset($str{2}));        // true
var_dump(strlen($str) < 3);      // false
  1. i += 1 代替 i = i + 1,效率更高。
  2. 遞增或遞減時,使用++$i--$i效率更高。++$i更快是因為它只需要 3 條指令(opcodes),$i++則需要 4 條指令。后置遞增實際上會產(chǎn)生一個臨時變量,這個臨時變量隨后被遞增。而前置遞增直接在原值上遞增。這是最優(yōu)化處理的一種,正如 Zend 的 PHP 優(yōu)化器所作的那樣。
  3. 盡可能的使用 PHP 內(nèi)置函數(shù)。
  4. 不要在類的構(gòu)造函數(shù)__contruct()中寫入過多的業(yè)務邏輯,這樣導致每次創(chuàng)建這個類對象時都會執(zhí)行構(gòu)造函數(shù)中的代碼。
  5. 獲取當前的腳本運行時間可以直接獲取$_SERVER['REQUSET_TIME']優(yōu)于time()
  6. 使用ip2long()long2ip()函數(shù)把IP地址轉(zhuǎn)成整型存放進數(shù)據(jù)庫而非字符型。
  7. 不要隨便就復制變量, 如將一個長名稱變量復制到一個短名稱的變量中,這很容易導致內(nèi)存浪費。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 1、用單引號代替雙引號來包含字符串,這樣做會更快一些。因為PHP會在雙引號包圍的字符串中搜尋變量,單引號則不會,注...
    紅魚綠魚與驢閱讀 1,133評論 0 3
  • 盡量靜態(tài)化: 靜態(tài)方法和非靜態(tài)方法的效率主要區(qū)別在內(nèi)存: 靜態(tài)方法在程序開始時生成內(nèi)存,實例方法在程序運行中生成內(nèi)...
    零一間閱讀 761評論 1 7
  • 盡量靜態(tài)化: 如果一個方法能被靜態(tài),那就聲明它為靜態(tài)的,速度可提高1/4,甚至我測試的時候,這個提高了近三倍。當然...
    夢幻_78af閱讀 707評論 1 1
  • 暑假兩個月沒動iOS,做項目時思路清晰卻老是忘代碼。藍瘦,之前覺得很簡單沒啥,現(xiàn)在看來我的記性并不好;整理一下順便...
    dtythicc閱讀 274評論 0 0
  • 地點:超市地鐵口那的四川小面 以面食為主,肉絲面很不錯,燃面有點膩但味道還行。有餃子,酸菜餡還是頭一次吃。...
    nofantasy閱讀 419評論 0 0

友情鏈接更多精彩內(nèi)容