注意:PHP7中十個須要避免的坑

  一、不要使用mysql_函數

  這一天終於來了,今後你不只僅「不該該」使用mysql_函數。PHP7已經把它們從核心中所有移除了,也就是說你須要遷移到好得多的mysqli_函數,或者更靈活的PDO實現。javascript

  二、不要編寫垃圾代碼

  這一條可能易於理解,可是會變得愈來愈重要,由於PHP7的速度提高可能會隱藏你的一些問題。不要僅僅知足於你的站點速度,由於遷移到PHP7才讓它變快。java

  做爲一名開發者,你應該老是確保按需加載腳本,儘量鏈接它們,編寫高效的數據查詢,儘量使用緩存,以及其餘。mysql

  三、不要在文件末尾使用PHP閉合標籤

  你能夠看一看,當一個文件以PHP代碼結尾時,wordpress多數核心代碼都把末尾的PHP標籤去掉了。實際上,zend框架特別禁止了它。PHP並不須要文件末尾的閉合標籤,而且咱們能夠經過去掉它保證不會再後面添加任何空白字符。程序員

  四、不要作沒必要要的引用傳遞

  我我的不喜歡引用傳遞。我知道有時候它很實用,可是其餘狀況下它使代碼變得難懂,而且更難預測結果。sql

  聽說一些人認爲它使代碼運行更快,可是根據一些PHP高級程序員說,這並不正確。數據庫

  說明引用爲何很差的一個例子是,PHP內建了shuffle()和sort()。它們修改原始數組,而不是返回處理後的數據,這很不合邏輯。編程

  五、不要在循環中執行查詢

  在循環中執行查詢很是浪費。它給你的系統施加沒必要要的壓力,而且可能可以在循環外部更快得到相同結果。當我遇到須要這樣的狀況時,我一般會使用兩個分離的查詢來解決問題。我會使用它們來構建數據數組。以後我會遍歷數組,並不須要在這個過程當中執行查詢。數組

  因爲wordpress適用於這裏,它可能有一些例外。雖然get_post_meta()會從數據庫獲取大量數據,若是你正在遍歷某個特殊博文的元數據你能夠在循環中使用它。這是由於當你第一次調用它的時候,wordpress實際上會獲取全部元數據並緩存它們。後續的調用使用這些數據,沒有數據庫的調用。緩存

  弄懂這些的最佳方式是閱讀函數文檔,以及使用相似Query Monitor的工具。框架

  六、不要在SQL查詢中使用*

  固然,這個更像MySQL的問題,可是咱們習慣在PHP編寫SQL代碼,因此都差很少。不管如何,如何能夠避免的話,不要在SQL查詢裏使用通配符,尤爲是數據庫有不少列的時候。

  你應該明確須要哪些行,而且僅僅獲取它們。這有助於減小所用資源,保護數據,以及讓事情變得儘量清晰。

  對於SQL,你須要瞭解全部可用的函數,而且儘量測試其速度。在計算均值、求和或計算相似數值時,要使用SQL函數而不是PHP函數。若是你不肯定某個查詢的速度,測試它而且嘗試一些其餘的編譯——以後使用最好的那個。

  七、不要信任用戶輸入

  信任用戶輸入是不明智的。始終校驗、過濾、轉義、檢查並留好退路。用戶數據存在三個問題:咱們開發者並無考慮每一種可能性,它一般不正確,以及它多是蓄意破壞。

  通過周密考慮的系統能夠防禦這些威脅。要確保使用相似filter_var()的內建函數檢查適當的值,以及在處理數據庫時轉義(或預編譯)。

  八、不要故做聰明

  你的目標是編寫優雅的代碼,來更清晰地表達你的意圖。你可能可以經過將任何東西縮短爲一個單詞的變量,使用多層的三元邏輯,以及其餘手段,從每一個頁面中優化0.01秒。但這隻會給你和你周圍的人產生大麻煩。

  合理命名變量,爲代碼編寫文檔,優先選擇清晰而不是簡潔。甚至還能夠更好,使用標準的面向對象代碼,它自己或多或少就是文檔,不須要一大堆內聯數組。

  九、不要從新發明輪子

  PHP到如今爲止有很長時間了,網站呃逆造出來的時間更長。極可能不管你須要造出什麼,一些人以前早就造出來了。不要懼怕向他人尋求支持。Github是你的好朋友,Composer也是,Packagist也是。

  從日誌工具到調色工具,從性能分析到單元測試框架,從Mailchimp API到Twitter Bootstrap,每一個東西均可以經過按下按鍵(或者敲下命令)來獲取,使用它們吧!

  十、不要忽略其餘語言

  若是你是個PHP程序員,當你能更好的瞭解HTML、CSS、javascript和MySQL時。就是從新學習Javascript的時機了。Javascript並非jQuery,你應該合理地學習Javascript來更高效地使用它。

  還有面向對象的PHP,它能夠節省時間,而且在代碼規模更大時會變得更好。對於相似C#或Java的語言,在你瞭解OOP以後,它們也更容易理解。

  經過了解管理器、構建腳本、CoffeeScript、LESS、SASS、YAML、腳本引擎和其餘強大的工具來擴展你的知識面。我強烈向你推薦看一看其餘框架,尤爲Laravel。

  當你使用它們出色完成任務時,學習Ruby、RoR、Android、Iphone和Windows Phone應用開發如何?你可能會認爲這毫無心義,由於它們在你的溫馨區和工做所需範圍以外,可是這就是它們的意義。每一種語言都有一些要學習的實用的東西,以及從沒碰到的新知識。因此PHP頂級開發者都懂你的不少其餘編程語言,這並不是偶然。

相關文章
相關標籤/搜索