給各位PHP程式員十點未來的建議

来源:https://www.cnblogs.com/a609251438/archive/2019/12/11/12025394.html
-Advertisement-
Play Games

PHP 從誕生到現在已經有20多年曆史,從Web時代興起到移動互聯網退潮,互聯網領域各種編程語言和技術層出不窮, Node.js 、 GO 、 Python 不斷地在挑戰 PHP 的地位。這些技術的推動者非常熱衷於唱衰 PHP , PHP 語言的未來在哪裡?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 程式十點未來的建議,希望對大家有所幫助。

1. Composer

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

2. PHP7

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

3. PSR

PSR 是 PHP Framework Interop Group 組織制定的PHP語言開發規範,約定了很多方面的規則,如命名空間、類名
規範、編碼風格標準、Autoload、公共介面等。現在已經成為PHP技術社區事實上的標準了。很多知名的 PHP 框架和類庫都遵守了 PSR 規範。PHP 開發者應當學習掌握 PSR 規範,在開發程式時應當儘量遵循 PSR 規範。

4. 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 是最好的選擇。

5. Laravel

最近幾年最火熱的 PHP 框架,官網號稱是為 Web 藝術家設計的框架,可見這套框架有多優雅。Laravel 提供的功能模塊豐富,API 設計簡潔,表達力強。而且它的社區非常活躍,代碼貢獻者眾多,第三方的插件非常多,生態系統相當繁榮。 Laravel 底層使用了很多 symfony2 組件,通過 composer 實現了依賴管理。如果還在糾結使用什麼PHP框架,不如選擇 Laravel 。 Laravel 提供的命令行工具基於 symfony.console 實現,功能強大,集成了各種項目管理、自動生成代碼的功能。

6. Phar

PHP5.3 之後支持了類似 Java 的 jar 包,名為 phar。用來將多個 PHP 文件打包為一個文件。這個特性使得 PHP 也可以像 Java 一樣方便地實現應用程式打包和組件化。一個應用程式可以打成一個 Phar 包,直接放到
PHP-FPM 中運行。配合 Swoole ,可以在命令行下執行 php server.phar 一鍵啟動伺服器。PHP 的代碼包可以用 Phar 打包成組件,放到 Swoole 的伺服器容器中去載入執行。

7. 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擴展函數和類。

8. HTML5

作為 Web 前端新一代標準,HTML5 未來前景非常廣闊,市場需求量非常大。從 PC 網站、B/S 企業軟體、移動端網頁、APP,這些領域都在擁抱 HTML5,掌握了 HTML5 才能在下一波互聯網技術大潮中存活下來。

9. Vue.js

PHP 程式員除了寫後臺程式之外,還有很大一部分工作在展現層,和瀏覽器前端打交道。2017 年你還在用 jQuery 操作 DOM 實現界面渲染嗎?已經完全 out 了。現在用 Vue.js 可以非常方便地實現數據和 DOM 元素的綁定。通過 Ajax 請求後臺介面返回數據後,更新前端數據自動實現界面渲染。2017 年再不學 Vue 就晚了。

如果你不光要寫 Web 程式,同時還希望兼顧 Android 、IOS 、PC 客戶端等平臺,React Native 是一個不錯的選擇。

10. 深度學習/人工智慧

互聯網的未來屬於人工智慧,如果你還不瞭解機器學習、深度學習、人工智慧這些概念,那你需要儘快學習瞭解一下。現在互聯網巨頭們都在佈局人工智慧,包括 Google 、 Facebook 、微軟、亞馬遜 和國內的百度。雖然現在還處於科學研究的階段,但未來互聯網的各個領域都會應用到人工智慧,包括自動駕駛、大數據分析、網路游戲、圖像識別、語言處理等。當然現在普通的工程師可能還無法參與到人工智慧產品中,但至少應該理解深度學習/人工智慧的基本概念和原理。

 

以上內容希望幫助到大家


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 第一步: 刪除該app名字下的migrations文件。 第二步: 進入資料庫,找到django_migrations的表,刪除該app名字的所有記錄。 delete from django_migrations; 第三步: python manage.py makemigrations pytho ...
  • 前兩天剛和媳婦兒從福岡旅游回來,這次久違的再去日本,感受良多啊! 首先是心情,之前是拿了老爸和自己所有的積蓄去上學,有一種為了人生未來而背水一戰的包袱在身上 結果遇到金融危機,沒有錢提前付下一年的學費也沒有時間找工作,最後不得不回國,失敗了! 這次和媳婦去玩,一切行程都是媳婦安排,從機票到大巴票到三 ...
  • Inversion of Control 將創建對象的權利交給框架,包括DI(Dependency Injection,依賴註入)和DL(Dependency Lookup,依賴查找),能削減電腦程式的耦合,即解除代碼中的依賴關係 應用 xml 1. 建立maven工程 2. 導入jar包,pom ...
  • python中的 和 ,能夠讓函數支持任意數量的參數,它們在函數定義和調用中,有著不同的目的 一. 打包參數 的作用:在函數定義中,收集所有的位置參數到一個新的元組,並將這個元組賦值給變數args 的作用:在函數定義中,收集關鍵字參數傳遞給一個字典,並將這個字典賦值給變數kwargs PS:遇到問題 ...
  • 1、find檢測str是否包含在mystr,如果是返回開始的索引值,否則返回 1 2、index和find一樣只不過,str不在mystr中會報一個異常 3、rfind、rindex從右往左找 4、count返回str在start和end之間,在mystr里出現的次數 5、replace把mystr ...
  • Python是面向對象(OOP)的語言, 而且在OOP這條路上比Java走得更徹底, 因為在Python里, 一切皆對象, 包括int, float等基本數據類型. 在Java里, 若要為一個類定義只讀的屬性, 只需要將目標屬性用private修飾, 然後只提供getter()而不提供setter( ...
  • 原創發佈在 https://blog.csdn.net/qq_21484935/article/details/103461778 思路:請求小說的url並對內容進行解析,找到帶有更新時間的span標簽。然後配置郵箱,將內容作為發送。 我選擇的是網易的126郵箱,在官網登錄賬號,設置中,打開“POP ...
  • 一. 基本介紹 1. Lambda Lambda是java 8引入的一個新特性,一個Lambda表達式是一個匿名函數,它提供了更為簡單的語法和協作方式,能夠讓我們通過表達式來代替函數式介面。 Lambda表達式完全可以用在簡化創建匿名內部類上。 2. 函數式介面 所謂的函數式介面,就是指 只有一個抽 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 在我們開發過程中基本上不可或缺的用到一些敏感機密數據,比如SQL伺服器的連接串或者是OAuth2的Secret等,這些敏感數據在代碼中是不太安全的,我們不應該在源代碼中存儲密碼和其他的敏感數據,一種推薦的方式是通過Asp.Net Core的機密管理器。 機密管理器 在 ASP.NET Core ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 順序棧的介面程式 目錄順序棧的介面程式頭文件創建順序棧入棧出棧利用棧將10進位轉16進位數驗證 頭文件 #include <stdio.h> #include <stdbool.h> #include <stdlib.h> 創建順序棧 // 指的是順序棧中的元素的數據類型,用戶可以根據需要進行修改 ...
  • 前言 整理這個官方翻譯的系列,原因是網上大部分的 tomcat 版本比較舊,此版本為 v11 最新的版本。 開源項目 從零手寫實現 tomcat minicat 別稱【嗅虎】心有猛虎,輕嗅薔薇。 系列文章 web server apache tomcat11-01-官方文檔入門介紹 web serv ...
  • C總結與剖析:關鍵字篇 -- <<C語言深度解剖>> 目錄C總結與剖析:關鍵字篇 -- <<C語言深度解剖>>程式的本質:二進位文件變數1.變數:記憶體上的某個位置開闢的空間2.變數的初始化3.為什麼要有變數4.局部變數與全局變數5.變數的大小由類型決定6.任何一個變數,記憶體賦值都是從低地址開始往高地 ...
  • 如果讓你來做一個有狀態流式應用的故障恢復,你會如何來做呢? 單機和多機會遇到什麼不同的問題? Flink Checkpoint 是做什麼用的?原理是什麼? ...
  • C++ 多級繼承 多級繼承是一種面向對象編程(OOP)特性,允許一個類從多個基類繼承屬性和方法。它使代碼更易於組織和維護,並促進代碼重用。 多級繼承的語法 在 C++ 中,使用 : 符號來指定繼承關係。多級繼承的語法如下: class DerivedClass : public BaseClass1 ...
  • 前言 什麼是SpringCloud? Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的開發便利性簡化了分散式系統的開發,比如服務註冊、服務發現、網關、路由、鏈路追蹤等。Spring Cloud 並不是重覆造輪子,而是將市面上開發得比較好的模塊集成進去,進行封裝,從 ...
  • class_template 類模板和函數模板的定義和使用類似,我們已經進行了介紹。有時,有兩個或多個類,其功能是相同的,僅僅是數據類型不同。類模板用於實現類所需數據的類型參數化 template<class NameType, class AgeType> class Person { publi ...
  • 目錄system v IPC簡介共用記憶體需要用到的函數介面shmget函數--獲取對象IDshmat函數--獲得映射空間shmctl函數--釋放資源共用記憶體實現思路註意 system v IPC簡介 消息隊列、共用記憶體和信號量統稱為system v IPC(進程間通信機制),V是羅馬數字5,是UNI ...