我們都應該學習PHP

Tinywan發表於2023-12-25


今天這篇文章算是標題黨吧,估計有很多朋友是因為PHP這三個字母進來閱讀的。現在開發者社群裡面都在貶低PHP,唱衰PHP,已然成了一個梗。但我覺得PHP非常值得大家重新認識,PHP開發者社群也非常值得大家學習。不見得是來學習PHP這門程式語言,可以學習PHP這門語言的設計思想和PHP開發者社群的運作模式。

PHP這三個字母官方的含義是這樣的——PHP: Hypertext Preprocessor。但我想對PHP這三個字母做一個新的解讀:Pragmatic、Humanized、Permanent。這三個單詞也是我們所熟知的注重實效、人性化設計和長期主義。在我看來,PHP這門程式語言和它背後的開發者社群非常深刻地體現了這三種思想,而這正是我們現在提倡的迴歸的經營本質。

這麼說有點太抽象,還是來舉具體的例子吧。我說一個所有做管理軟體的團隊都會遇到的問題,如何應對客戶的定製化需求?

可能的解決方案之一是開分支。開一個分支,在分支上進行定製開發,然後交付給客戶。Git開分支很快,瞬間就完成了,挺簡單的。但如果有十個客戶、幾十個客戶、幾百個客戶呢?分支的維護就是巨大的成本。比如產生了Bug,需要在幾十乃至上百個分支裡面進行程式碼的合併更新,這個維護工作就要了命了。

另外一種可能的解決方案是在程式碼裡面預留各種各樣的配置開關。針對不同的客戶採用不同的配置或者開關。但這種方式會造成大量的程式碼冗餘,程式結構複雜冗長,邏輯結構不清晰。長期積累下來之後,程式碼就難以更新維護,成為屎山一樣的程式碼。而且也沒有辦法完全解決客戶個性化的問題,搞不好還是需要開分支來解決。

到後來低程式碼開發平臺就開始流行。其實這也不是什麼新鮮事。我記得在2013年左右的時候去一個客戶那兒做培訓,他們團隊內部有一個高手,做了一套快速開發平臺,給客戶做交付全是在這個平臺上進行各種配置。表面上來看是快了,但實際上覆雜度只會轉移,不會消失。快速開發平臺帶來的問題是抽象不夠、表現能力不強。受限於快速開發平臺本身的能力,難以解決更深層次的業務邏輯問題。所以這時候就需要快速開發平臺提供更強大的能力,比如邏輯判斷、迴圈,甚至需要直接開放程式設計介面,允許使用者自己寫程式碼來實現。到最後快速開發平臺本身就變成了一個開發語言。

來說說我們禪道專案管理軟體的解決方案吧。我們的解決方案就是給客戶提供擴充套件。而我們的這種能力是基於PHP的執行機制實現的。眾所周知,PHP是指令碼語言,是動態載入動態執行的。而且它也有很完善的物件導向程式設計的機制,所以在PHP世界裡面,可以做各種好玩的事情。禪道專案管理軟體的程式碼分為了大家所熟知的MVC三層,即Model、View、Controller。同時我們又細分了Configuration、Language、CSS和JavaScript這些概念。在框架層我們還有基礎的Framework和核心的Library。所有的這些不同層次的程式碼都是可以擴充套件的。禪道的所有請求都會經由一個單一入口來載入,框架在載入程式碼的時候會優先判斷擴充套件目錄裡面有沒有符合擴充套件規則的程式碼需要載入。如果有的話,就先載入擴充套件的程式碼。而擴充套件的程式碼在繼承基礎程式碼的基礎上又可以做進一步的修改。透過這種方式我們就實現了非常完整的擴充套件機制,可以根據客戶的需要做各種的改動。我們給客戶交付的都是擴充套件程式碼,從來不開分支。

禪道軟體的這種擴充套件機制,其實是很簡單的一種架構,沒有什麼太複雜高深的技術。無外乎就是定義各種的擴充套件規則,然後實現動態載入的邏輯就可以了。但恰恰是這種簡單的架構是最有效的。可以有效解決個性化定製和主幹程式碼更新的問題。而這種能力是在PHP語言的動態機制基礎上構建的。這是PHP注重實效的非常好的一個體現。

PHP社群也非常注重開發者友好。我就不多講,簡單說幾個點。比如PHP的手冊,非常成體系,非常翔實,是我見過所有程式語言裡官方文件維護得最好的。PHP在語言設計的時候也儘量給到開發者各種的自由,沒有太多強制的地方。同一個問題在PHP世界裡面有各種各樣的實現方式。

PHP開發者社群也非常地穩健,不急不躁,穩步前進。PHP社群在更新迭代的時候採取了漸進式的方式,向下的相容性做得很好。這樣可以保證老版本PHP開發的程式也可以享受新版本PHP帶來的效能提升的收益。兩年前PHP社群還成立了基金會,累計募集了超過110萬美金的資金,截止今天賬面上結餘73萬美金。在過去的一年裡,PHP基金會僱用了6位全職或者兼職的PHP開發人員。在新的一年裡還會計劃僱用4名開發人員。訊息發出後,PHP基金會共得到了207份申請。PHP基金會從中選出了12名合格候選人的候選名單,又從中選出了4名傑出的開發者。自從成立了基金會之後,PHP的發版速度也在加快,一切都在朝著更好的方向發展。

今天是借PHP這門程式語言展開討論。但其實在產品研發和企業經營過程中也是一樣的道理。同樣也需要注重實效、人性化設計和長期主義。隨著新經濟週期的到來,我相信會有越來越多的團隊開始注重三者。比如我最近就看到了好多從微服務架構重新用單體應用模式重構的案例。

我是春哥,禪道軟體公司的創始人,二十年的IT老兵,14年的創業者。這是我的個人公眾號。喜歡編碼,喜歡做產品,所以我用了程式碼之歌做我的公眾號的名字。我會持續地更新關於企業管理、產品管理、專案管理、團隊建設、創業、學習型組織、企業文化、開源軟體等方面話題的實踐和思考,歡迎大家和我討論交流。

我們都應該學習PHP
​2023年12月24日 拍攝於 · 杭州西湖

版權宣告
作者:Tinywan
出處:mp.weixin.qq.com/s/8QElDFBAYc7dPDc...
本文版權歸作者和禪道官方共有。歡迎轉載,但必須保留此段宣告,且在文章頁面明顯位置給出原文連線,否則保留追究法律責任的權利。
歡迎關注個人微信公眾號,一起進步!掃描左方二維碼即可

我們都應該學習PHP

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章