現(xiàn)在的 PHP 沒你想的那么差

PHP 現(xiàn)在名聲很糟糕,但 PHP 并不像許多人所說的那么糟糕。


它是不是鼓勵糟糕的實踐?
不再是了。過去,許多開發(fā)者被書本教授非常糟糕的實踐,因此 PHP 代碼的質量非常差。PHP 曾經還允許你做一些非常奇怪的事情,使得它非常容易構建,但維護起來卻是一場噩夢。

這些不再是常見的問題。隨著高質量學習材料的引入,這些材料易學且易獲取,一名新的開發(fā)人員可以以正確的方式學習 PHP。這樣就可以避免初級開發(fā)者因為不知道構建事物的正確方法而編寫一些維護起來非常痛苦的代碼。

隨著框架的引入,導致許多糟糕體驗的大部分通用代碼現(xiàn)在都自動完成了;因此,開發(fā)人員只需使用框架,框架就可以正確地對其進行編碼。來源公眾號:碼農編程進階筆記

而且,這些年來,一些糟糕的實踐是由缺失的特性造成的,導致了一些本不應該被允許的事情被允許?,F(xiàn)在大多數(shù)情況下,甚至不可能實現(xiàn)以前編寫的一些東西來導致這種聲譽。


它的安全性是不是很差?
過去,PHP 應用程序的安全性通常很差,因為語言允許這樣做。這些東西不再被使用,因為 PHP 應用程序的開發(fā)現(xiàn)在已經完全不同。

通過使用自動加載程序來包含文件而不是動態(tài)包含文件,已經移除了遠程和本地文件包含(其中 PHP 從其它地址而不是最初打算的地址讀取文件)。

通過廣泛使用模板系統(tǒng)(可以自動處理顯示動態(tài)內容的轉義和安全問題),已經避免了由于直接在 PHP 中直接使用 HTML 所導致的跨站腳本攻擊(其中一個用戶將 JavaScript 腳本添加到要顯示給另一個用戶的地方)。

通過在 SQL 中使用 prepared 語句,避免了 SQL 注入攻擊(這是由于需要構建 SQL 查詢并將查詢和數(shù)據(jù)一起發(fā)送導致的,其中用戶可以向查詢中增加額外的 SQL 命令)。另外,ORM 的使用也很普遍,它確保用戶數(shù)據(jù)和查詢是分開發(fā)送的,而 SQL 不能將其視為單獨的命令。

通過廣泛使用且采用 nonce 系統(tǒng)的 form 庫,避免了跨站請求偽造(其中,用戶能夠被誘騙在你的站點上執(zhí)行某些操作)。



它是不是真的很慢?
這取決于你把它與什么比較。如果你把 PHP 與 Java、C 或者 Go 比較,那么它是比較慢。但是如果你把 PHP 與 Python、Ruby 等等比較,那么它并不慢。在同類型的語言中,PHP 是最快的之一,并且不斷在提高性能。

大多數(shù)情況下,你的應用程序慢是因為服務器過載或者數(shù)據(jù)庫查詢慢。這些問題在任何語言中都會存在。



它的伸縮性是不是真的很差?
實際上,任何語言都可以伸縮。編譯型語言(例如 Go、C 或 Rust)比腳本型語言(例如 PHP)的擴展成本更低。然而,它們并不是為了同樣的任務而設計的。事實上,它們都是一樣的;這簡單地歸結于你使用的服務器數(shù)量。如果你使用足夠多的服務器,你可以擴展任何應用程序。PHP 比其它腳本型語言的擴展成本更低,因為它需要更少的資源來開始運行,并且可以在具有更多 CPU 的較小內存的服務器上運行。來源公眾號:碼農編程進階筆記

另外,對于伸縮性,重要的是數(shù)據(jù)庫。如果你能夠擴展你的數(shù)據(jù)庫,你就可以擴展你的應用程序。數(shù)據(jù)庫比應用服務器更難擴展。增加另一個讀取數(shù)據(jù)庫的客戶端很容易;但是,讓數(shù)據(jù)庫快速運行要難得多。


我應該一直使用它嗎?
不。每種編程語言都有其擅長的領域。PHP 非常適合 Web 應用程序。你應該用它來構建網站和 API。

如果你正在構建一個系統(tǒng)應用程序,其中每毫秒都很重要,使用 Rust 或者 C。

如果你正在構建一個人工智能應用程序,Python 是一個好選項。

如果你正在構建一個 SaaS 應用程序,PHP 是一個好選項。

如果你正在構建一個安卓應用程序,Kotlin 是一個好選項。

如果你正在構建一個運行在多個平臺上的應用程序,Java 是一個好選項。、

PHP 還有未來么,還是 28 歲就“壽終正寢”了?

2023年PHP/Go面試題集總結【建議收藏】


結  論
很多關于 PHP 的說法都已經過時 10 年了。在我們看來,如果有人給你關于某個技術主題的過期 10 年的信息,那么這個人可能不是你想要信任的技術專家。作為多年 PHP 的開發(fā)者,在使用了 Go 語言之后......

PHP 是創(chuàng)建 Web 應用程序的一門好編程語言,我們認為它是 Web 應用程序開發(fā)的最佳語言。






作者:碼農編程進階筆記


歡迎關注微信公眾號 :碼農編程進階筆記