{eval=Array;=+count(Array);}
PHP 現在名聲很糟糕,因為它曾經是“可怕”的。
本文試著回答一些常見的關于 PHP 的斷言,目的是向非技術人員解釋,PHP 并不像許多人所說的那么糟糕。
1、它是不是鼓勵糟糕的實踐?
不再是了。過去,許多開發者被書本教授非常糟糕的實踐,因此 PHP 代碼的質量非常差。PHP 曾經還允許你做一些非常奇怪的事情,使得它非常容易構建,但維護起來卻是一場噩夢。
這些不再是常見的問題。隨著高質量學習材料的引入,這些材料易學且易獲取,一名新的開發人員可以以正確的方式學習 PHP。這樣就可以避免初級開發者因為不知道構建事物的正確方法而編寫一些維護起來非常痛苦的代碼。
隨著框架的引入,導致許多糟糕體驗的大部分通用代碼現在都自動完成了;因此,開發人員只需使用框架,框架就可以正確地對其進行編碼。
而且,這些年來,一些糟糕的實踐是由缺失的特性造成的,導致了一些本不應該被允許的事情被允許。現在大多數情況下,甚至不可能實現以前編寫的一些東西來導致這種聲譽。
小結
它不再鼓勵糟糕的實踐…
通過使用框架避免了糟糕實踐。
語言特性現在有很多討論。糟糕的特性不再受到支持。
PHP 添加了其他語言中存在的大部分(即使不是全部)的特性。
2、它的安全性是不是很差?
過去,PHP 應用程序的安全性通常很差,因為語言允許這樣做。這些東西不再被使用,因為 PHP 應用程序的開發現在已經完全不同。
通過使用自動加載程序來包含文件而不是動態包含文件,已經移除了遠程和本地文件包含(其中 PHP 從其它地址而不是最初打算的地址讀取文件)。
通過廣泛使用模板系統(可以自動處理顯示動態內容的轉義和安全問題),已經避免了由于直接在 PHP 中直接使用 HTML 所導致的跨站腳本攻擊(其中一個用戶將 JavaScript 腳本添加到要顯示給另一個用戶的地方)。
通過在 SQL 中使用 prepared 語句,避免了 SQL 注入攻擊(這是由于需要構建 SQL 查詢并將查詢和數據一起發送導致的,其中用戶可以向查詢中增加額外的 SQL 命令)。另外,ORM 的使用也很普遍,它確保用戶數據和查詢是分開發送的,而 SQL 不能將其視為多帶帶的命令。
通過廣泛使用且采用 nonce 系統的 form 庫,避免了跨站請求偽造(其中,用戶能夠被誘騙在你的站點上執行某些操作)。
小結
通過使用自動加載程序(所有主流框架的標配),避免了遠程和本地文件包含。
通過使用模板語言作為標準或一種前端框架(例如 React),避免了跨站腳本(XSS)攻擊。
通過使用 ORMs 和廣泛使用 prepared 語句,避免了 SQL 注入。
通過使用 nonce token(被所有主流框架自動支持),避免了跨站請求偽造(CRSF)攻擊。
3、它是不是真的很慢?
這取決于你把它與什么比較。如果你把 PHP 與 Java、C 或者 Go 比較,那么它是比較慢。但是如果你把 PHP 與 Python、Ruby 等等比較,那么它并不慢。在同類型的語言中,PHP 是最快的之一,并且不斷在提高性能。
大多數情況下,你的應用程序慢是因為服務器過載或者數據庫查詢慢。這些問題在任何語言中都會存在。
小結
PHP 與編譯型語言相比是比較慢。
PHP 與其它腳本型語言相比是比較快的。
網站慢通常不是由于使用的語言不夠快,而是因為服務器或數據庫導致的性能問題。
4、它的伸縮性是不是真的很差?
實際上,任何語言都可以伸縮。編譯型語言(例如 Go、C 或 Rust)比腳本型語言(例如 PHP)的擴展成本更低。然而,它們并不是為了同樣的任務而設計的。事實上,它們都是一樣的;這簡單地歸結于你使用的服務器數量。如果你使用足夠多的服務器,你可以擴展任何應用程序。PHP 比其它腳本型語言的擴展成本更低,因為它需要更少的資源來開始運行,并且可以在具有更多 CPU 的較小內存的服務器上運行。
另外,對于伸縮性,重要的是數據庫。如果你能夠擴展你的數據庫,你就可以擴展你的應用程序。數據庫比應用服務器更難擴展。增加另一個讀取數據庫的客戶端很容易;但是,讓數據庫快速運行要難得多。
小結
任何語言都可以伸縮;這取決于你使用多少服務器。
擴展的真正問題是數據庫而不是所使用的應用程序語言。
如果你能夠擴展你的數據,你就能擴展你的應用程序。
5、我應該一直使用它嗎?
不。每種編程語言都有其擅長的領域。PHP 非常適合 Web 應用程序。你應該用它來構建網站和 API。
如果你正在構建一個系統應用程序,其中每毫秒都很重要,使用 Rust 或者 C。
如果你正在構建一個人工智能應用程序,Python 是一個好選項。
如果你正在構建一個 SaaS 應用程序,PHP 是一個好選項。
如果你正在構建一個安卓應用程序,Kotlin 是一個好選項。
如果你正在構建一個運行在多個平臺上的應用程序,Java 是一個好選項。
小結
每種語言都有其最佳用例。
PHP 的最佳用例是 Web 應用程序。
Go、Rust、C 適合系統應用程序。
Python 適合人工智能。
Kotlin 適合安卓應用程序。
Java 適合與平臺無關的應用程序。
6、結論
每年都有在吐槽php,可是你這個phper現在過期了嗎?很多關于 PHP 的說法都已經過時 10 年了。在我看來,如果有人給你關于某個技術主題的過期 10 年的信息,那么這個人可能不是你想要信任的技術專家。
PHP 是創建 Web 應用程序的一門好編程語言,我認為它是實現 Web 應用程序開發的最佳語言。
1
回答4
回答0
回答0
回答1
回答10
回答10
回答2
回答10
回答1
回答