php網(wǎng)站內容管理系統 PHP沒(méi)你想的那么差
優(yōu)采云 發(fā)布時(shí)間: 2022-05-25 07:38php網(wǎng)站內容管理系統 PHP沒(méi)你想的那么差
作者 | Iain Cambridge
譯者 | 張健欣策劃 | 劉燕
PHP 現在名聲很糟糕,因為它曾經(jīng)是“可怕”的。本文試著(zhù)回答一些常見(jiàn)的關(guān)于 PHP 的斷言,目的是向非技術(shù)人員解釋?zhuān)琍HP 并不像許多人所說(shuō)的那么糟糕。
1它是不是鼓勵糟糕的實(shí)踐?
不再是了。過(guò)去,許多開(kāi)發(fā)者被書(shū)本教授非常糟糕的實(shí)踐,因此 PHP 代碼的質(zhì)量非常差。PHP 曾經(jīng)還允許你做一些非常奇怪的事情,使得它非常容易構建,但維護起來(lái)卻是一場(chǎng)噩夢(mèng)。
這些不再是常見(jiàn)的問(wèn)題。隨著(zhù)高質(zhì)量學(xué)習材料的引入,這些材料易學(xué)且易獲取,一名新的開(kāi)發(fā)人員可以以正確的方式學(xué)習 PHP。這樣就可以避免初級開(kāi)發(fā)者因為不知道構建事物的正確方法而編寫(xiě)一些維護起來(lái)非常痛苦的代碼。
隨著(zhù)框架的引入,導致許多糟糕體驗的大部分通用代碼現在都自動(dòng)完成了;因此,開(kāi)發(fā)人員只需使用框架,框架就可以正確地對其進(jìn)行編碼。
而且,這些年來(lái),一些糟糕的實(shí)踐是由缺失的特性造成的,導致了一些本不應該被允許的事情被允許?,F在大多數情況下,甚至不可能實(shí)現以前編寫(xiě)的一些東西來(lái)導致這種聲譽(yù)。
小結2它的安全性是不是很差?
過(guò)去,PHP 應用程序的安全性通常很差,因為語(yǔ)言允許這樣做。這些東西不再被使用,因為 PHP 應用程序的開(kāi)發(fā)現在已經(jīng)完全不同。
通過(guò)使用自動(dòng)加載程序來(lái)包含文件而不是動(dòng)態(tài)包含文件,已經(jīng)移除了遠程和本地文件包含(其中 PHP 從其它地址而不是最初打算的地址讀取文件)。
通過(guò)廣泛使用模板系統(可以自動(dòng)處理顯示動(dòng)態(tài)內容的轉義和安全問(wèn)題),已經(jīng)避免了由于直接在 PHP 中直接使用 HTML 所導致的跨站腳本攻擊(其中一個(gè)用戶(hù)將 JavaScript 腳本添加到要顯示給另一個(gè)用戶(hù)的地方)。
通過(guò)在 SQL 中使用 prepared 語(yǔ)句,避免了 SQL 注入攻擊(這是由于需要構建 SQL 查詢(xún)并將查詢(xún)和數據一起發(fā)送導致的,其中用戶(hù)可以向查詢(xún)中增加額外的 SQL 命令)。另外,ORM 的使用也很普遍,它確保用戶(hù)數據和查詢(xún)是分開(kāi)發(fā)送的,而 SQL 不能將其視為單獨的命令。
通過(guò)廣泛使用且采用 nonce 系統的 form 庫,避免了跨站請求偽造(其中,用戶(hù)能夠被誘騙在你的站點(diǎn)上執行某些操作)。
小結3
它是不是真的很慢?
這取決于你把它與什么比較。如果你把 PHP 與 Java、C 或者 Go 比較,那么它是比較慢。但是如果你把 PHP 與 Python、Ruby 等等比較,那么它并不慢。在同類(lèi)型的語(yǔ)言中,PHP 是最快的之一,并且不斷在提高性能。
大多數情況下,你的應用程序慢是因為服務(wù)器過(guò)載或者數據庫查詢(xún)慢。這些問(wèn)題在任何語(yǔ)言中都會(huì )存在。
小結4它的伸縮性是不是真的很差?
實(shí)際上,任何語(yǔ)言都可以伸縮。編譯型語(yǔ)言(例如 Go、C 或 Rust)比腳本型語(yǔ)言(例如 PHP)的擴展成本更低。然而,它們并不是為了同樣的任務(wù)而設計的。事實(shí)上,它們都是一樣的;這簡(jiǎn)單地歸結于你使用的服務(wù)器數量。如果你使用足夠多的服務(wù)器,你可以擴展任何應用程序。PHP 比其它腳本型語(yǔ)言的擴展成本更低,因為它需要更少的資源來(lái)開(kāi)始運行,并且可以在具有更多 CPU 的較小內存的服務(wù)器上運行。
另外,對于伸縮性,重要的是數據庫。如果你能夠擴展你的數據庫,你就可以擴展你的應用程序。數據庫比應用服務(wù)器更難擴展。增加另一個(gè)讀取數據庫的客戶(hù)端很容易;但是,讓數據庫快速運行要難得多。
小結活動(dòng)推薦
8 月 28 日 13:00 -17:00,我們將邀請 5 位以上 TGO 鯤鵬會(huì )技術(shù)管理者登陸 InfoQ 視頻號,直播分享從碼農到 CTO 的全路徑成長(cháng)經(jīng)驗,關(guān)注視頻號,千萬(wàn)不要錯過(guò)這場(chǎng)直播!
5我應該一直使用它嗎?
不。每種編程語(yǔ)言都有其擅長(cháng)的領(lǐng)域。PHP 非常適合 Web 應用程序。你應該用它來(lái)構建網(wǎng)站和 API。
如果你正在構建一個(gè)系統應用程序,其中每毫秒都很重要,使用 Rust 或者 C。
如果你正在構建一個(gè)人工智能應用程序,Python 是一個(gè)好選項。
如果你正在構建一個(gè) SaaS 應用程序,PHP 是一個(gè)好選項。
如果你正在構建一個(gè)安卓應用程序,Kotlin 是一個(gè)好選項。
如果你正在構建一個(gè)運行在多個(gè)平臺上的應用程序,Java 是一個(gè)好選項。
小結6結論
很多關(guān)于 PHP 的說(shuō)法都已經(jīng)過(guò)時(shí) 10 年了。在我們看來(lái),如果有人給你關(guān)于某個(gè)技術(shù)主題的過(guò)期 10 年的信息,那么這個(gè)人可能不是你想要信任的技術(shù)專(zhuān)家。
PHP 是創(chuàng )建 Web 應用程序的一門(mén)好編程語(yǔ)言,我們認為它是 Web 應用程序開(kāi)發(fā)的最佳語(yǔ)言。
小結
原文鏈接:
今日好文推薦
InfoQ 讀者交流群上線(xiàn)啦!各位小伙伴可以?huà)呙柘路蕉S碼,添加 InfoQ 小助手,回復關(guān)鍵字“進(jìn)群”申請入群?;貜汀百Y料”,獲取資料包傳送門(mén),注冊 InfoQ 網(wǎng)站后,可以任意領(lǐng)取一門(mén)極客時(shí)間課程,免費滴!大家可以和 InfoQ 讀者一起暢所欲言,和編輯們零距離接觸,超值的技術(shù)禮包等你領(lǐng)取,還有超值活動(dòng)等你參加,快來(lái)加入我們吧!
8 月 28 日 13:00 -17:00,我們將邀請 5 位以上 TGO 鯤鵬會(huì )技術(shù)管理者登陸 InfoQ 視頻號,直播分享從碼農到 CTO 的全路徑成長(cháng)經(jīng)驗,關(guān)注視頻號,千萬(wàn)不要錯過(guò)這場(chǎng)直播!
點(diǎn)個(gè)在看少個(gè) bug




