天天看點

如何成為專業的PHP開發者

如何才能成為一名專業的PHP開發者?資深Web開發者 Bruno Skvorc 其部落格上分享了一些心得

如何成為專業的PHP開發者

當閱讀各種和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專業開發者的路上。堅持原則,永不放棄(即使周圍的人放棄了),持續練習。