如何才能成為專業的php開發者?資深web開發者Bruno Skvorc在其部落格上分享了一些心得。 當閱讀各種和PHP相關的部落格、Quora問題、Google 社群、資訊和雜誌的時候,Bruno Skvorc注意到討論的問題出現了兩極分化的現象。例如“我如何連接到一個mysql資料庫?”,或者是“在不增加伺服器的前提下,我如何使得郵件系統能夠每小時發送超過一百萬份電子郵件?” Bruno Skvorc根據PHP的使用能力將應用者分為四類:初級、中級、專業和精英。 兩極在PHP語言中,初級使用者會用一些變數、includes、表單處理,等等。還會學一些簡單的邏輯結構。借助教程他們能用PHP發郵件,甚至他們可能接觸到一些物件導向程式設計的例子,當然他們不一定理解背後的原理。他們使用WordPress,修改一些CSS類別。他們憑著這些知識去申請工作,然後很不幸地被拒絕了。 PHP專業用戶能讓許多專案煥發生機。他們使用眾多框架開發商業應用,有效率地使用各種不同的資料庫,參加各種研討會,學習各種設計模式,輕鬆地開發出一個完整的專案——從流程設計到最後運行。他們早已不再使用過程式設計範式了。 精英程式設計師就是傳說中經過10000 小時磨練的專業人士,自己編寫擴充功能來擴充自己部署的PHP的功能,只要粗略地瀏覽一下原始檔就能抓出bug,對程式碼佈局極為講究,只認可極為複雜的項目,在別人還沒察覺之前就找到解決問題的創造性的替代方案。他們也會寫一些暢銷的關於PHP語言的書籍,在大量研討會上發言,甚至創建一個屬於自己的PHP分支或一兩個非常成功的框架。 那麼,那些中級用戶在哪裡? 缺失的一環一個程式設計師如何從初級升到專業級甚至更高?如果一個人只會基礎的程式設計知識,他如何提升自己的技能,捨棄糟糕的實踐,使用高階的方式實踐呢?初學者常問Bruno Skvorc這個問題。要成為一個專業的程式設計師,首先要成為一個中級php程式設計師。 接下來的清單指出了流暢地使用PHP需要注意的一些方面: 放棄義大利麵式程式碼很多人認為使用類別意味著是在寫物件導向的程式碼,而使用函數就代表是寫過程式碼。大錯特錯!讓我們複習一下廣義的定義:過程式碼就是不使用類別和物件的程式碼,物件導向的程式碼就是盡可能地使用類別和物件。 Bruno Skvorc的建議是完全放棄過程式碼。盡可能採用物件導向風格——編寫類別,封裝邏輯,考慮真實世界的術語。考慮到可重複使用性,過程式碼相對於基於類別的程式碼的效能優勢微不足道。適當的OOP程式碼可以讓未來的開發者接手你的專案。通常人們會這麼反駁:「但是,WordPress可是過程式的!」老實說(也許不好聽),如果WordPress的開發者是PHP開發者的話,那Instagram的開發者可就是攝影師了。這並不意味著WP沒什麼用——對於部落格、簡單的網站和一天專案而言,WP很棒。用WP能很快地賺些小錢,對不太懂技術的用戶而言也很好用。但精通WP絕不代表你是專業的PHP開發者──那就是一堆義大利麵一樣的程式碼,那些程式碼可沒辦法教你合理的設計原則。 從小事做起。思考現實世界的概念,試著用物件導向的程式碼表達它們。學習一些基本的教程,再慢慢往進階方向發展。練習物件導向程式設計直到你真正理解類別。在此之前,不要急著學習各種框架,以及 MVC 之類的抽象術語。 鑽研現有項目不管你在哪裡看到的原始碼,都要仔細鑽研。例如,在Github裡查找PHP項目,克隆下來,部署在自己的機器上,嘗試加以修改。一個文件接著一個文件,一行程式碼接著一行程式碼,直到你真正理解它們的意義。 學習建構的PHP環境建立PHP環境也是一項寶貴的技能。這不僅允許你調整優化自己的配置,還可以讓你熟悉如何透過原始碼建立插件。 別用Windows開發-如果你的主要桌面是Windows,你需要安裝一個虛擬機器軟體,然後執行一個Linux虛擬機器-Windows的大小寫敏感,行結尾,和大多數伺服器環境不同的怪異之處,都會造成你麻煩。所以最好在一個和伺服器相似的環境下開發。 虛擬機器也有利於實驗-如果出現了問題,你可以重新開始或回滾一下。你也可以盡情實驗,不用擔心把一切搞砸。掌握工具的使用方法是很重要的,但有一個好的工作平台也同樣重要。 用自己搭建的環境做實驗也可以讓你熟悉不同的伺服器-該用Nginx還是Apache,或是使用Appserver,等等。 儘早應用最佳實踐在寫自己程式碼的時候,要確保詳細註解、完美縮排、仔細架構。在建立一個類別、專案和程式庫之後,使用知名的文檔工具(PHPDocumentor、ApiGen)來提取文檔,並在此基礎上加以改進。 一個好的IDE是很寶貴的,熟悉一個跨平台的編輯器有利於你在架設新環境後馬上進入代碼,而不是把時間浪費在設置鍵盤快捷鍵和主題上。確保你將IDE設定檔保存在雲端,(例如Google Drive),這樣即使你新安裝了系統,你也可以很方便地匯入它們。 Bruno Skvorc推薦PHPStorm和Netbeans這兩個跨平台的IDE,後者是免費的。 早一點適應最佳實踐能夠幫助你在專案過程裡保持一致,更有助於別人流利地閱讀你的程式碼。找到你的風格並堅持下去——這對你自己和別人都有好處。盡可能嚴格遵循PSR標準(PSR-0、PSR-1、PSR-2、PSR-3)。標準可不是徒有虛名。大部分人遵循這些標準,喜愛這些標準,因為它們增加了每個人的程式碼的可重複使用性和可讀性。 對於初學者來說,PHP之道是一個非常有用的資源,提供及時的指引。透過此書,你可以熟悉最新的最佳實踐,物件導向的基本概念,安全,部署,程式碼標準,等等。 嘗試不同的框架後做出選擇很久以來,PHP是個具備最多框架的程式語言(JavaScript最近已經趕上了)。很難說這到底是意味著社區的分裂還是語言的流行。但事實是,選擇一款框架是個很糾結的事情,尤其是在剛開始的時候。 試用了大多數框架之後,Bruno Skvorc推薦穩定優質的Phalcon框架。其實Phalcon是用C語言寫的,可以當作PHP擴充安裝,因此比現存的框架都要快。無論如何,嘗試使用不同的框架絕對是必要的。 當你嘗試不同框架的時候,你每次都能學到解決常見問題的新方式。每個框架都有自己的特性和坑,但最重要的是,你能學到別人(主要是框架開發者)的想法。你將接觸新的用法和方式,用所有你能找到的框架重構你的項目是一個非常好的練習。這將幫助你有效地衡量某個特定框架的效率:開發的速度和效能。 閱讀千萬不要忽略別人給你的提示和小建議。盡可能多閱讀。訂閱好的博客,閱讀網站上的教程,在StackOverflow上面閱覽問答,訂閱郵件列表,關注Google 上的優質資源。但是要避免PHP基礎教學類別的書本,它們很快就會過時。相反,要專注於網路上有用的、最新的程式碼片段和教學。即使是已經接觸過的主題也可以再讀一遍,常常能從別人的觀點裡領悟出新的想法。 如果沒有工作,那就發明一些出來總有事情要做。永遠別對自己說:「我沒有一個專案。」更別對自己說:「我很無聊。」如果你找不到什麼項目做,那就開一個新的。你是不是因為天天使用的工具缺乏某個功能而沮喪?做一個更好的替代品!沒有新產品的創意?那就重複現有的創意——試著重建一個基本的facebook,重新創建一些你已知的項目來練手。 最重要的是永遠別停-如果你停下了,就不會有驚人的一萬小時了!持續地工作,維持自己的興趣,持續投入。做一個簡單的地址薄應用。然後用別的框架重構一下。然後再換個資料庫(例如將 MariaDB 換成 Mongo)。保持忙碌! 找一個夥伴或指導者和人合作學習更容易。尋找一個和你一樣有熱情的夥伴。也許你是少數好運氣的人,能找到一個能和你分享極客興趣的夥伴。也許你在學校裡,能找到一個想開始學習也需要夥伴的同伴。你甚至可以找一個指導者,接受一些專業指導。 永遠不要低估陪伴的力量! 結論當你專注於實踐上面所提到各種方法的時候,你就在成為PHP專業開發者的路上。堅持原則,永不放棄(即使周圍的人放棄了),持續練習。 原文 ecoming a PHP Professional: The Missing Link |