PHP
從誕生到現(xiàn)在已經(jīng)有20多年歷史,從Web時代興起到移動互聯(lián)網(wǎng)退潮序六,互聯(lián)網(wǎng)領域各種編程語言和技術層出不窮任连, Node.js 、 GO 例诀、
Python 不斷地在挑戰(zhàn) PHP 的地位课梳。這些技術的推動者非常熱衷于唱衰 PHP , PHP 語言的未來在哪里余佃?PHP
程序員當如何應對未來的變革暮刃?
作為老牌的Web后端編程語言,PHP 在全球市場占有率非常高爆土,僅次于 Java 椭懊,從各個招聘網(wǎng)站的數(shù)據(jù)上來看PHP
開發(fā)的職位非常多,薪資水平也非常不錯步势。實際在中小企業(yè)氧猬、互聯(lián)網(wǎng)創(chuàng)業(yè)公司PHP的市場地位是高于 Java 的。Java
在超大型企業(yè)坏瘩、傳統(tǒng)軟件行業(yè)盅抚、金融領域優(yōu)勢更大。目前來看 Node.js倔矾、 GO 妄均、 Python 、 Ruby
等語言還難以企及PHP和Java哪自。
PHP 語言之所以能有今天的地位丰包,得益于PHP語言設計者一直遵從實用主義,將技術的復雜性隱藏在底層壤巷。PHP
語言入門簡單邑彪,容易掌握,程序健壯性好胧华,不容易出現(xiàn)像 Java 寄症、 C++ 等其他語言那樣復雜的問題,如內(nèi)存泄漏和 Crash
矩动,跟蹤調(diào)試相對輕松很多有巧。PHP
官方提供的標準庫非常強大,各種功能函數(shù)都能在官方的標準庫中找到铅忿,包括MySQL剪决、Memcache、Redis、GD圖形庫柑潦、CURL享言、XML、JSON等等渗鬼,免除了開發(fā)者到處找?guī)斓臒览缆丁HP
的文檔非常棒,每個函數(shù)都有詳細的說明和使用示例譬胎。第三方類庫和工具差牛、代碼、項目也很豐富堰乔。開發(fā)者可以快速偏化、高效地使用 PHP
編寫開發(fā)各類軟件。到目前為止市面上仍然沒有出現(xiàn)比 PHP 更簡單易用的編程語言镐侯。所以 PHP
的前景還是很廣闊的侦讨,與其糾結于編程語言的選擇,不如好好地深入學習使用 PHP 苟翻。
作為一個資深的 PHP 開發(fā)者韵卤,在技術上給各位 PHP 程序十點未來的建議,希望對大家有所幫助崇猫。
1. Composer
第一點就要提 Composer 沈条,自從 Composer 出現(xiàn)后,PHP 的依賴管理可以變得非常簡單诅炉。程序內(nèi)依賴一些類庫和框架蜡歹,直接使用 Composer 引入即可,通過使用composer update安裝依賴的包汞扎。解決了過去加載外部庫的各種難題季稳。Composer 也有國內(nèi)鏡像擅这,速度非吵浩牵快。現(xiàn)在絕大部分PHP開源的項目都提供了 Composer 的支持仲翎,建議大家在項目中使用 Composer 來解決 PHP 代碼包管理的問題痹扇,不要再使用下載源碼、手工 include 的原始方法溯香。
2. PHP7
PHP7 版本對 Zend 引擎做了大量修改鲫构,大幅提升了 PHP 語言的性能,使用 PHP7 可以使你的程序性能瞬間翻倍玫坛。即使是
WordPress 這樣重量級的軟件運行在 PHP7 都能有上千 QPS 结笨,相當于一臺服務器每天就能處理 8000 萬次請求。使用 PHP7
,做好 MySQL 優(yōu)化炕吸,使用 Memcache 和 Redis
進行加速伐憾,這套技術架構完全可以應對相當大規(guī)模的系統(tǒng)。除了某些億級用戶的平臺之外赫模,一般規(guī)模的系統(tǒng)完全沒有壓力树肃。
3. PSR
PSR 是http://www.php-fig.org/組織制定的PHP語言開發(fā)規(guī)范,約定了很多方面的規(guī)則瀑罗,如命名空間胸嘴、類名、規(guī)范斩祭、編碼風格標準劣像、Autoload、公共接口等〈菝担現(xiàn)在已經(jīng)成為PHP技術社區(qū)事實上的標準了驾讲。很多知名的 PHP 框架和類庫都遵守了 PSR 規(guī)范。PHP 開發(fā)者應當學習掌握 PSR 規(guī)范席赂,在開發(fā)程序時應當盡量遵循 PSR 規(guī)范吮铭。
4. Swoole
2017 年 PHP 還局限于做 Web 網(wǎng)站嗎?No 颅停,如果你還不知道 Swoole 谓晌,趕快去了解一下吧。Swoole 的口號是重新定義
PHP 語言癞揉,Swoole 是一個異步并行的通信引擎纸肉,作為 PHP 的擴展來運行。Node.js 的異步回調(diào) Swoole 有喊熟,Go語言的協(xié)程
Swoole 也有柏肪,這完全顛覆了對 PHP 的認知。使用 Swoole PHP 可以實現(xiàn)常駐內(nèi)存的 Server 程序芥牌,可以實現(xiàn) TCP 烦味、
UDP 異步網(wǎng)絡通信的編程開發(fā)。過去PHP只能做一個 Web 網(wǎng)站壁拉,現(xiàn)在使用 Swoole 可以做 Java 谬俄、C++ 才能實現(xiàn)的通信服務,比如
WebSocket 即使通信弃理、聊天溃论、推送服務器、RPC 遠程調(diào)用服務痘昌、網(wǎng)關钥勋、代理炬转、游戲服務器等。如果你想用 PHP 做點 Web
系統(tǒng)之外的東西算灸,Swoole 是最好的選擇返吻。
5. Laravel
最近幾年最火熱的 PHP 框架,官網(wǎng)號稱是為 Web 藝術家設計的框架乎婿,可見這套框架有多優(yōu)雅测僵。Laravel 提供的功能模塊豐富,API
設計簡潔谢翎,表達力強捍靠。而且它的社區(qū)非常活躍森逮,代碼貢獻者眾多榨婆,第三方的插件非常多,生態(tài)系統(tǒng)相當繁榮褒侧。 Laravel 底層使用了很多
symfony2 組件良风,通過 composer 實現(xiàn)了依賴管理。如果還在糾結使用什么PHP框架闷供,不如選擇 Laravel 烟央。 Laravel
提供的命令行工具基于 symfony.console 實現(xiàn),功能強大歪脏,集成了各種項目管理疑俭、自動生成代碼的功能。
6. Phar
PHP5.3 之后支持了類似 Java 的 jar 包婿失,名為 phar钞艇。用來將多個 PHP 文件打包為一個文件。這個特性使得 PHP 也可以像 Java 一樣方便地實現(xiàn)應用程序打包和組件化豪硅。一個應用程序可以打成一個 Phar 包哩照,直接放到
PHP-FPM 中運行。配合 Swoole 懒浮,可以在命令行下執(zhí)行php server.phar一鍵啟動服務器飘弧。PHP 的代碼包可以用 Phar 打包成組件,放到 Swoole 的服務器容器中去加載執(zhí)行嵌溢。
7. C/C++/GO
任何技術有優(yōu)點就有缺點眯牧,PHP 作為一門動態(tài)腳本語言,優(yōu)點是開發(fā)方便效率高赖草。缺點就是性能差。在密集運算的場景下比 C 剪个、 C++
相差幾十倍甚至上百倍秧骑。另外 PHP 不可以直接操作底層,需要依賴擴展庫來提供 API 實現(xiàn)。PHP
程序員可以學習一門靜態(tài)編譯語言作為補充實現(xiàn)動靜互補乎折,C/C++/Go
都是不錯的選擇绒疗。而且靜態(tài)語言的編程體驗與動態(tài)語言完全不同,學習過程可以讓你得到更大的提升骂澄。
掌握 C/C++ 語言后吓蘑,還可以閱讀 PHP 、 Swoole 坟冲、 Nginx 磨镶、Redis 、 Linux內(nèi)核 等開源軟件的源碼健提,了解其底層運行原理琳猫。
現(xiàn)在最新版本的Swoole提供了C++擴展模塊的支持,封裝了Zend API私痹,用C++操作PHP變得很簡單脐嫂,可以用C++實現(xiàn)PHP擴展函數(shù)和類。
8. HTML5
作為 Web 前端新一代標準紊遵,HTML5 未來前景非常廣闊账千,市場需求量非常大。從 PC 網(wǎng)站暗膜、B/S 企業(yè)軟件蕊爵、移動端網(wǎng)頁、APP桦山,這些領域都在擁抱 HTML5攒射,掌握了 HTML5 才能在下一波互聯(lián)網(wǎng)技術大潮中存活下來。
9. Vue.js
PHP 程序員除了寫后臺程序之外恒水,還有很大一部分工作在展現(xiàn)層会放,和瀏覽器前端打交道。2017 年你還在用 jQuery 操作 DOM
實現(xiàn)界面渲染嗎钉凌?已經(jīng)完全 out 了∵肿睿現(xiàn)在用 Vue.js 可以非常方便地實現(xiàn)數(shù)據(jù)和 DOM 元素的綁定。通過 Ajax
請求后臺接口返回數(shù)據(jù)后御雕,更新前端數(shù)據(jù)自動實現(xiàn)界面渲染矢沿。2017 年再不學 Vue 就晚了。
如果你不光要寫 Web 程序酸纲,同時還希望兼顧 Android 捣鲸、IOS 、PC 客戶端等平臺闽坡,React Native 是一個不錯的選擇栽惶。
10. 深度學習/人工智能
互聯(lián)網(wǎng)的未來屬于人工智能愁溜,如果你還不了解機器學習、深度學習外厂、人工智能這些概念冕象,那你需要盡快學習了解一下。現(xiàn)在互聯(lián)網(wǎng)巨頭們都在布局人工智能汁蝶,包括
Google 渐扮、 Facebook 、微軟掖棉、亞馬遜
和國內(nèi)的百度墓律。雖然現(xiàn)在還處于科學研究的階段,但未來互聯(lián)網(wǎng)的各個領域都會應用到人工智能啊片,包括自動駕駛只锻、大數(shù)據(jù)分析、網(wǎng)絡游戲紫谷、圖像識別齐饮、語言處理等。當然現(xiàn)在普通的工程師可能還無法參與到人工智能產(chǎn)品中笤昨,但至少應該理解深度學習/人工智能的基本概念和原理祖驱。