天天看點

2017 年 PHP 程式員未來路在何方

php 從誕生到現在已經有20多年曆史,從web時代興起到移動網際網路退潮,網際網路領域各種程式設計語言和技術層出不窮, node.js 、 go 、 python 不斷地在挑戰 php 的地位。這些技術的推動者非常熱衷于唱衰 php , php 語言的未來在哪裡?php 程式員當如何應對未來的變革?

作為老牌的 web 後端程式設計語言,php 在全球市場占有率非常高,僅次于 java ,從各個招聘網站的資料上來看php 開發的職位非常多,薪資水準也非常不錯。實際在中小企業、網際網路創業公司php的市場地位是高于 java 的。java 在超大型企業、傳統軟體行業、金融領域優勢更大。目前來看 node.js、 go 、 python 、 ruby 等語言還難以企及 php 和 java 。

php 語言之是以能有今天的地位,得益于php語言設計者一直遵從實用主義,将技術的複雜性隐藏在底層。php 語言入門簡單,容易掌握,程式健壯性好,不容易出現像 java 、 c++ 等其他語言那樣複雜的問題,如記憶體洩漏和 crash ,跟蹤調試相對輕松很多。php 官方提供的标準庫非常強大,各種功能函數都能在官方的标準庫中找到,包括mysql、memcache、redis、gd圖形庫、curl、xml、json等等,免除了開發者到處找庫的煩惱。php 的文檔非常棒,每個函數都有詳細的說明和使用示例。第三方類庫和工具、代碼、項目也很豐富。開發者可以快速、高效地使用 php 編寫開發各類軟體。到目前為止市面上仍然沒有出現比 php 更簡單易用的程式設計語言。是以 php 的前景還是很廣闊的,與其糾結于程式設計語言的選擇,不如好好地深入學習使用 php 。

作為一個資深的 php 開發者,在技術上給各位 php 程式十點未來的建議,希望對大家有所幫助。

composer

第一點就要提 composer ,自從 composer 出現後,php 的依賴管理可以變得非常簡單。程式内依賴一些類庫和架構,直接使用 composer 引入即可,通過使用 composer update 安裝依賴的包。解決了過去加載外部庫的各種難題。composer 也有國内鏡像,速度非常快。現在絕大部分php開源的項目都提供了 composer 的支援,建議大家在項目中使用 composer 來解決 php 代碼包管理的問題,不要再使用下載下傳源碼、手工 include 的原始方法。

php7

php7 版本對 zend 引擎做了大量修改,大幅提升了 php 語言的性能,使用 php7 可以使你的程式性能瞬間翻倍。即使是 wordpress 這樣重量級的軟體運作在 php7 都能有上千 qps ,相當于一台伺服器每天就能處理 8000 萬次請求。使用 php7 ,做好 mysql 優化,使用 memcache 和 redis 進行加速,這套技術架構完全可以應對相當大規模的系統。除了某些億級使用者的平台之外,一般規模的系統完全沒有壓力。

psr

規範、編碼風格标準、autoload、公共接口等。現在已經成為php技術社群事實上的标準了。很多知名的 php 架構和類庫都遵守了 psr 規範。php 開發者應當學習掌握 psr 規範,在開發程式時應當盡量遵循 psr 規範。

swoole

2017 年 php 還局限于做 web 網站嗎?no ,如果你還不知道 swoole ,趕快去了解一下吧。swoole 的口号是重新定義 php 語言,swoole 是一個異步并行的通信引擎,作為 php 的擴充來運作。node.js 的異步回調 swoole 有,go語言的協程 swoole 也有,這完全颠覆了對 php 的認知。使用 swoole php 可以實作常駐記憶體的 server 程式,可以實作 tcp 、 udp 異步網絡通信的程式設計開發。過去php隻能做一個 web 網站,現在使用 swoole 可以做 java 、c++ 才能實作的通信服務,比如 websocket 即使通信、聊天、推送伺服器、rpc 遠端調用服務、網關、代理、遊戲伺服器等。如果你想用 php 做點 web 系統之外的東西,swoole 是最好的選擇。

laravel

最近幾年最火熱的 php 架構,官網号稱是為 web 藝術家設計的架構,可見這套架構有多優雅。laravel 提供的功能子產品豐富,api 設計簡潔,表達力強。而且它的社群非常活躍,代碼貢獻者衆多,第三方的插件非常多,生态系統相當繁榮。 laravel 底層使用了很多 symfony2 元件,通過 composer 實作了依賴管理。如果還在糾結使用什麼php架構,不如選擇 laravel 。 laravel 提供的指令行工具基于 symfony.console 實作,功能強大,內建了各種項目管理、自動生成代碼的功能。

phar

php5.3 之後支援了類似 java 的 jar 包,名為 phar。用來将多個 php 檔案打包為一個檔案。這個特性使得 php 也可以像 java 一樣友善地實作應用程式打包群組件化。一個應用程式可以打成一個 phar 包,直接放到

php-fpm 中運作。配合 swoole ,可以在指令行下執行 php server.phar 一鍵啟動伺服器。php 的代碼包可以用 phar 打包成元件,放到 swoole 的伺服器容器中去加載執行。

c/c++/go

任何技術有優點就有缺點,php 作為一門動态腳本語言,優點是開發友善效率高。缺點就是性能差。在密集運算的場景下比 c 、 c++ 相差幾十倍甚至上百倍。另外 php 不可以直接操作底層,需要依賴擴充庫來提供 api 實作。php 程式員可以學習一門靜态編譯語言作為補充實作動靜互補,c/c++/go 都是不錯的選擇。而且靜态語言的程式設計體驗與動态語言完全不同,學習過程可以讓你得到更大的提升。

掌握 c/c++ 語言後,還可以閱讀 php 、 swoole 、 nginx 、redis 、 linux核心 等開源軟體的源碼,了解其底層運作原理。

現在最新版本的swoole提供了c++擴充子產品的支援,封裝了zend api,用c++操作php變得很簡單,可以用c++實作php擴充函數和類。

html5

作為 web 前端新一代标準,html5 未來前景非常廣闊,市場需求量非常大。從 pc 網站、b/s 企業軟體、移動端網頁、app,這些領域都在擁抱 html5,掌握了 html5 才能在下一波網際網路技術大潮中存活下來。

vue.js

php 程式員除了寫背景程式之外,還有很大一部分工作在展現層,和浏覽器前端打交道。2017 年你還在用 jquery 操作 dom 實作界面渲染嗎?已經完全 out 了。現在用 vue.js 可以非常友善地實作資料和 dom 元素的綁定。通過 ajax 請求背景接口傳回資料後,更新前端資料自動實作界面渲染。2017 年再不學 vue 就晚了。

如果你不光要寫 web 程式,同時還希望兼顧 android 、ios 、pc 用戶端等平台,react native 是一個不錯的選擇。

深度學習/人工智能

網際網路的未來屬于人工智能,如果你還不了解機器學習、深度學習、人工智能這些概念,那你需要盡快學習了解一下。現在網際網路巨頭們都在布局人工智能,包括 google 、 facebook 、微軟、亞馬遜 和國内的百度。雖然現在還處于科學研究的階段,但未來網際網路的各個領域都會應用到人工智能,包括自動駕駛、大資料分析、網絡遊戲、圖像識别、語言處理等。當然現在普通的工程師可能還無法參與到人工智能産品中,但至少應該了解深度學習/人工智能的基本概念和原理。