10位頂級PHP大師的開發原則

  在Web開發世界裏,PHP是最流行的語言之一,從PHP裏,你可以很容易的找到你所需的腳本,遺憾的是,不多人會去用「最佳作法」去寫一個PHP程序。這裏,咱們向你們介紹PHP的10種最佳實踐,固然,每一種都是通過大師們證實而得出的。javascript

1. 在合適的時候使用PHP – Rasmus Lerdorf

  沒有誰比PHP的建立者Rasmus Lerdorf明白PHP用在什麼地方是更合理的,他於1995年發佈了PHP這門語言,從那時起,PHP就像燎原之火,燒遍了整個開發陣營,改變了互聯網的世界。但是,Rasmus並非所以而建立PHP的。PHP是爲了解決web開發者的實際問題而誕生的。php

  和許多開源項目同樣,PHP變得流行,流行的動機並不能用正常的哲學來進行解釋,甚至流行得有些孤芳自賞。它徹底能夠做爲一個案例,一個解決各類Web問題的工具需求所引發的案例,所以當PHP剛出現的時候,這種工具需求所有聚焦到PHP的身上。java

  可是,你不能奢望PHP能夠解決全部問題。Lerdorf是第一個認可PHP只是一種工具的人,而且PHP也有不少力所不能及的狀況。程序員

  根據工做的不一樣來選擇合適的工具。我跑了不少家公司,爲了說服他們部署和使用PHP,可是這並不意味着PHP對全部問題都適用。它只是能夠一個解決大部分問題的front-end腳步語言。web

  做爲一個web開發者,嘗試用PHP解決全部問題是不科學的,同時也會浪費你的時間。當PHP玩不轉的時候,不要猶豫,試用一下其餘的語言吧。數據庫

2. 使用多表存儲提升規模伸縮性 – Matt Mullenweg

  沒有人願意質疑Matt Mullenweg在PHP方面的權威性,他開發了這個星球上最流行的blog系統,(依靠一個強大的社區力量支持): WordPress. 建立Wordpress之後,Matt和他的團隊啓動了WordPress.com平臺,一個基於WordPress MU的免費blog站點。如今,Wordpress.com已經擁有大約400萬用戶, 這些用戶天天提供超過 140,000篇的日誌。 (要查看更多Wordpress.com的統計狀況,請點擊這裏.)編程

  若是有人知道如何讓網站的規模伸縮自如,這我的必定是Matt Mullenweg。2006年的時候 Matt對Wordpress的數據結構進行了前瞻性的改進,而且解釋了爲何Wordpress MU對每一個blog使用獨立的MYSQL表格, 而不是把全部的blog數據都塞進一個巨大的表格。緩存

  咱們測試過這個方法,可是發現若是要擴展它的伸縮性,代價過高。若是用一個總體的數據結構,在大流量面前,你將會面臨服務器硬件的問題。在MU裏面。用戶們都被分佈到獨立的表格當中,而且能夠輕易地組織起來。舉個例子,WordPress.com把用戶的數據分散存儲到4096個數據庫中,這些數據庫能夠分散大規模的數據訪問,實現流量和壓力分流。安全

  數據表的可遷移性讓代碼(blog)能夠運行得更快,而且讓系統具有更強的伸縮性。依靠強大的緩存策略和靈活的數據庫運用策略, Matt向人們展現了時下最流行的Facebook和Wordpress.com均可以在PHP下穩定運行,而且處理驚人的訪問量。服務器

3. 千萬不要相信用戶 – Dave Child

  Dave Child是Added Bytes (previously ilovejackdaniels.com) 網站的核心人物,這個網站以他出色的《cheat sheets for many programming languages》而聞名。 Dave爲不少英國的公司服務,而且已經在編程世界裏樹立起至關的權威。

  Dave爲PHP開發者提供了不少深謀遠慮的建議,並總結成了《writing secure code in PHP》:千萬不要相信你的用戶,他們甚至可能會傷害你。

  有一條web開發的基本原則,我重複多少遍都以爲不夠,那就是:千萬不要相信你的用戶,同時要假設你網站中的每一個數據單元都是從用戶那裏收集來的惡意代碼。不少時候,你必須用javascript在客戶端檢驗表單提交過來的內容, 若是你習慣瞭如此,那麼,這是一個好習慣。若是安全性對你來講很重要,這就是最重要最須要學習的原則。

  Dave目前正致力於爲它的《Writing Secure PHP》系列書籍整理實例,書的最後他說:

  最後,變得偏執一點吧。除非你認爲你的站點永遠不會受到攻擊,不然就正視全部的問題,當問題真正發生的時候,你的狀況會變得很糟。你須要把每一個用戶都當作會帶來一場攻防站的黑客,想盡一切辦法來保護站點的安全,同時想好相應問題的解決方案。

4. 多使用PHP緩存 – Ben Balbo

  Ben Balbo開發了Site Point,一個爲developers和designers提供指導的網站。他是墨爾本PHP開發和開源俱樂部的成員, 所以他對PHP有必定的瞭解,同時對PHP caching有必定的想法和經驗。

  若是你擁有一個訪問量很大,但更新並不頻繁的站點(好比blog,基於某種CMS),或許它須要進行一些改造,這些改造不會花費太多的時間,可是對性能有突出的貢獻。 若是要爲一個複雜/更新頻率很快的站點創建緩存機制,過程可能會很曲折,可是好處也是顯而易見的。

  PHP緩存技術有不少種,Ben爲咱們推薦了以下一些:

  ◆緩存函數的運行結果

  ◆設置過時時間

  ◆緩存IE下載的文件

  ◆模板緩存技術

  ◆Cache_Lite

  因爲PHP做爲動態語言的特性,緩存機制對於更新頻率並不快的站點來講很是重要。

5. 使用IDE, Templates和Snippets加速PHP開發 – Chad Kieffer

  當Chad Kieffer從UI設計和數據庫優化的工做中抽身出來的時候,他會在他的博客2 tablespoons上分享不少技術經驗。因爲Chad多方面的全面發展,他常常能夠發現其餘程序員不能發現的問題,並造成相關經驗,尤爲是他開發網站的方法。他參與了網站開發的各個環節,所以他的建議對於提升網站開發的大局觀很是有用。

  Chad認爲使用Eclipse PDT(Eclipse’s PHP development package) 這樣的IDE,同時使用一些模板技術和開源項目能夠有效地提升PHP的開發速度。

  緊湊的計劃,長長的to do lists以及deadlines讓開發人員很是苦悶。不過有些功能,好比Eclipse Templates,能夠有效減小編碼的時間和出錯的概率。

  一般來講,任何項目均可以自動化,自動化程度越高, 你完成項目的時間就越短。花時間來開發使用頻率很高的框架和模板,將會節省你之後更多時間。同時,使用像Eclipse and the PDT package這樣的IDE,你會發現效率獲得明顯提升,IDE能夠自動閉合,補全分號而且能夠在本地debug。

6. 利用好PHP的過濾函數 – Joey Sochacki

  或許Joey Sochacki並不像Matt Mullenweg那樣有名 ,但他也是一個經驗豐富的開發者,而且經過他的博客Devolio分享了不少技術經驗。

  Joey發如今編寫php代碼的過程當中有不少地方須要進行過濾,但卻並無太多的coder關注php的內置過濾函數。

  過濾數據是咱們常常須要作的事情,可是不少功能豐富的PHP內置過濾函數卻鮮爲人知。使用相似filter_* 的PHP內置函數,咱們幾乎能夠處理全部的過濾任務,包括數據類型驗證/URL/email和IP地址驗證/特殊字符處理等等。

  過濾是一件複雜的事情,可是我相信joey的發現會給你不少啓發,讓你認識到PHP強大的過濾功能。

7. 使用PHP框架 – Josh Sharp

  對因而否應該使用Zend, CakePHP, Code Igniter, 或者 其餘PHP框架,一直存在着不少爭議,可是在web開發者的心中,他們有本身衡量的標準。

  Josh Sharp本身建立了一家提供麪包和黃油服務的網站,所以他對於使用PHP框架來開發網站有必定的經驗。他認爲使用一個PHP框架來進行項目開發(use a PHP framework ),能夠有效地節省時間,而且減小出錯的概率。爲何?由於他以爲PHP實在是太好上手了。

  PHP的易於使用有時候也有缺陷,由於並不嚴格的語法,常常會致使不少錯誤代碼的誕生。但若是使用一個PHP框架,出錯的概率就會大大減小。

  PHP框架可讓你的代碼結構更加規範,而且節省大量時間。

8. 不要使用PHP框架 – Rasmus Lerdorf

  與Josh的觀點偏偏相反,PHP的鼻祖Rasmus Lerdorf卻認爲最好不要使用PHP框架,爲何?由於不基於框架的PHP性能更好。Rasmus在Drupalcon 2008的演講上,用「Hello World」的例子來對比了一些框架PHP和簡單PHP之間的性能,結果顯示框架PHP的性能要遠遠落後。

9. 使用批處理 – Jack D. Herrington

  Jack Herrington對PHP世界並不陌生, 而且爲大名鼎鼎的IBM developerWorks貢獻過超過30篇的專搞, 同時出版過《PHP Hacks》的書,所以他是一個真正的專家。

  Herrington推薦使用批處理和Cron來代替那些能夠運行在後臺的程序腳步,Web用戶並不肯意在線等待你的處理過程,因此有些事情更適合放到後臺來處理。

  誠然,在某些狀況下,這有點大材小用了,可是你能夠清楚地看到,使用Cron, MySQL, PHP面向對象的方法以及Pear::DB這些便捷的工具來建立一個批處理工具並非一件複雜的事情。

  Jack認爲使用cron, PHP和MySQL在後臺處理一些任務,比起多進程的業務邏輯要划算得多。

  兩種方法我都嘗試過,我認爲Cron很是符合」Keep It Simple, Stupid」 (KISS) 的原則,它讓後臺處理變得簡單。與多進程的業務邏輯相比,它沒有內存溢出的風險。你能夠建立一個簡單的批處理腳本,而且在cron中運行,這個腳本會定時檢查是否有任務須要處理,處理完以後就會自動退出,所以你不用擔憂是否有進程卡殼,或者陷入死循環。

10. 及時啓用錯誤報告 – David Cummings

  David Cummings有一個專門提供CMS軟件服務的公司 ,而且得到過幾回獎 ,他有很是豐富的PHP開發經驗。David曾經寫過《two PHP tips he wished he’d learned in the beginning》,其中一點就是:及時啓用錯誤報告,這會節省大量的時間。

  我告訴人們,最重要的事情就是最大程度地開啓PHP的錯誤報告,爲何?由於PHP可能會隱藏不少小問題:

  ◆變量沒有預約義

  ◆在代碼片斷中引用了不可用的變量

  ◆使用了未定義的常量這些因素看起來並非什麼大事,除非你在使用面向對象的方法編寫一些類庫。一般,關閉錯誤報告將可能使你付出更大的成原本維護你的代碼。

  錯誤報告能夠幫你輕易地找到代碼的問題所在,若是錯誤報告的等級夠高,細微的錯誤都能被當即發現,幫助你節省總體debug的時間。

相關文章
相關標籤/搜索