從路由 HTTP 請求到存取資料庫和呈現使用者介面,大多數 Web 應用程式彼此之間有很多共同點。其中許多允許訪客登錄,很難想像沒有電子郵件發送的 Web 應用程式。
#軟體框架是將這種觀察付諸應用的一種方法。
透過提取常見特徵和應用程式的底層架構,並將它們捆綁到可重複使用的範本和庫集合中,框架允許開發人員專注於使他們的專案脫穎而出的因素。
事實上,當您使用先前的項目作為樣板而不是從頭開始時,您就已經在使用臨時框架了。流行的 PHP 框架(例如 Laravel、Yii 或 Symfony)透過專注於設計框架的架構和工具,然後提供給其他開發人員在他們的專案中使用,從而採用這種方法得出其邏輯結論。
但是使用框架總是最好的方法嗎?或者有時只使用純 PHP 從頭開始是否有意義?
為了回答這個問題,在本教程中,我們將了解使用 PHP 框架的五個優點和缺點。
讓我們先看看使用 PHP 框架如何幫助您進行應用程式開發。
在當今基於實驗、快速原型設計以及盡快將最低可行產品推向世界的新創公司中,開發速度可能決定您業務的成敗。
使用 PHP 框架是滿足此要求的一種方法。
精心設計的PHP 框架會從開源社群中選擇常見問題的最佳實現,並在它們的基礎上構建,為您提供應用程式架構(在大多數情況下,基於模型-視圖-控制器模式) )來指導您的發展。
這樣,您就不必花時間規劃應用程式的架構和評估各種可用的程式庫,而是從功能齊全的範本開始,然後直接建立特定於您的應用程式的功能。許多 PHP 框架還附帶命令列工具,您可以使用它來產生程式碼並節省更多寶貴的開發時間。
在加快開發速度的同時,框架還可以讓您更加安全:您的工作速度很快,但這不是透過使用快速而骯髒的解決方案來實現的,而是透過使用經過驗證的最佳實踐和現成的組件來實現。
現代 PHP 框架中包含的解決方案由使用該框架的多個開發人員進行持續測試、同行評審和驗證。由於框架是開源的,因此您在專有程式碼中可能忽略的安全問題和其他問題很快就會被注意到並修復。
也就是說,重要的是要記住,使用框架並不意味著您可以忘記所有有關安全性和良好開發實踐的內容。確保您按照框架的預期使用該框架,保持其更新,並在參數驗證等方面盡自己的一份力量——使用框架的工具,這並不是那麼困難。
透過為您的應用程式提供健全的結構並推動您採用軟體開發最佳實踐和模式,PHP 框架將指導您編寫鬆散耦合且盡可能少重複的程式碼。換句話說,它很容易閱讀、測試、維護和進一步開發。
今天幾乎所有流行的 PHP 框架都是物件導向的,並且在開發時考慮了自動化測試甚至測試驅動開發。
你仍然需要盡自己的一份力量。但與從頭開始相比,一個框架及其文件提醒您這些概念並推動您使用它們肯定會有所幫助。
使用框架使應用程式維護變得更容易的另一種方法是透過其共用元件。由於框架庫和幫助程式是獨立於您的應用程式開發的,因此您可以將應用程式的大部分維護工作交給框架開發人員。
在某種程度上,這就像有一個開發團隊免費為您工作!
作為開發人員,您熟悉您的類別和函數並且可以輕鬆使用它們。但當你引入團隊成員時,情況就會改變。
如果不了解您的設計決策和完整的文件(讓我們面對現實:尤其是在快速開發的世界中,文件往往是事後才想到的),他們會發現很難理解您的應用程式程式碼。
使用 PHP 框架將有助於新開發人員更輕鬆地開始專案工作。他們很可能已經熟悉該框架,並且可以將所有註意力集中在理解應用程式的細節上。即使該框架對他們來說是新的,文件、線上教學和熟悉的設計模式也將幫助他們以最少的努力加快速度。
在此期間,您可以繼續開發應用程序,而不是教導開發人員您的思維方式。
最後,使用 PHP 框架的一個顯著好處來自於聚集在他們周圍的活躍的開發人員和使用者社群。 p>
所有主要框架都吸引開源貢獻者,他們除了致力於框架本身之外,還開發其他小部件、庫和幫助器元件,供其他人包含在他們的應用程式中。其他貢獻者編寫教程和書籍或創建影片來解釋他們如何在現實專案中使用框架的細節。
作為此類開發人員社群的一部分,您將成長為一名開發人員,快速學習並將所學知識應用到應用程式開發中。
如果您願意,您可以以任何讓您感到自然和滿足的方式回饋並參與開源專案。
既然我們已經了解了使用 PHP 框架如何幫助您進行開發,那麼讓我們來看看它的缺點,以及為什麼有時不使用 PHP 框架可能是更好的選擇。
與執行簡單的 PHP 腳本相比,PHP 框架總是以在呼叫程式碼之前載入的類別和函式庫的形式增加複雜性和開銷。對於需要快速運行的有限功能集的快速腳本和 API,這種差異可能很顯著。
然而,在大多數 Web 應用程式中,框架的效率影響更取決於您如何使用它,而不是框架本身。例如,雖然 Active Record 實作是存取資料庫的一種便捷方式,但在必須同時處理資料庫中的多行的地方使用它是沒有意義的。
因此,這取決於了解應用程式的需求,但又不允許自己執著於特定的使用方式。有時,即使在使用框架時,迴避並在較低抽象層級編寫一些程式碼也是有意義的。
PHP 框架的理念是成為大多數開發人員在開發 Web 應用程式時會遇到的重複需求的通用解決方案。但是,我們應該在哪裡劃定框架中包含哪些內容以及將哪些內容留給應用程式(或第三方附加元件)來實現?
根據一些開發人員的說法,這是許多框架出錯的地方。
PHP 的創作者 Rasmus Lerdorf 曾說:
「沒有人有普遍的問題。每個人都有一個想要解決的非常具體的問題。通用框架雖然可以解決這個問題,但通常會以一種讓你得到很多你不需要的其他東西的方式來解決它。最終每個請求都會完成。」
因此,如果您決定使用框架,請務必確保選擇一個適合您的應用程式需求的框架。
雖然大多數框架都基於延遲加載,並且不會包含應用程式不使用的框架部分,但增加的複雜性仍然存在,導致在刪除框架附帶的功能時進行不必要的修改,但是你不需要的。
雖然 PHP 框架會推動您寫出優秀的程式碼,但它並不能保證一定能實現。如果您在不了解框架及其背後的設計模式的情況下使用框架,那麼您很可能最終會遇到一個大的、結構化的混亂。
對於已經從其他框架或專案熟悉這些設計原則的人來說,學習曲線會相對較短。對於經驗較少的開發人員來說,學習時間會更長。更不用說掌握框架了。
因此,如果您很趕時間,並且您的專案很小,那麼可能不是開始學習新框架的時候。相反,請考慮使用微框架,甚至從頭開始並使用一些您熟悉的庫。
Then, take the time to learn a full-blown PHP framework when your schedule allows.
使用軟體框架可以將您的應用程式開發提升到更高的抽象層級。這是設計使然,通常是件好事。然而,很高興認識到它也可能導致問題。
雖然框架模板的許多部分都需要自定義,但框架的核心及其庫就像一個黑盒子,您可以使用但沒有太多控制權。您可以提出改進建議,但最終由框架的開發人員決定是否包含該變更。
此外,如果您在完全理解PHP 語言本身之前就開始使用框架,您可能會將該框架的功能與語言功能混淆,並且最終會使用該框架的功能,即使純PHP 是更好的選擇。
框架始終是您的應用程式的外部依賴項 - 由您和您的團隊以外的其他人控制的程式碼。雖然這通常不是問題,但如果您正在建立的軟體是您業務的核心部分,則值得考慮。
問問自己,如果框架的開發被放棄或朝著你不想遵循的方向發展,你會怎麼做。
降低這種風險的一個好方法是使用可靠、流行的框架以及活躍的開發人員和使用者社群。但即便如此,還是需要考慮一下:使用框架的好處是否足以值得冒這個風險?
現代 PHP 框架是軟體開發人員工具箱中的強大工具:它可以為您節省大量時間和精力,讓您在開發 PHP 應用程式時高枕無憂。請記住,這不應該取代先學習核心 PHP!
然而,上述結論的關鍵是為工作選擇正確的工具。每個專案都是不同的,即使是適合一個專案的框架也可能不太適合下一個專案。力求簡單,問問自己成熟的框架是否適合該項目,或者使用像 Lumen 這樣的微型框架是否是更好的解決方案。
從頭開始使用普通PHP 很少是最好的選擇,但是在開發一個非常簡單的應用程式(例如沒有太多互動性的網站)時,這也值得考慮- 並且記住,您始終可以通過使用Composer 選擇來擴展它您選擇的庫。
選擇框架時,請確保您選擇的框架得到積極開發和支持,並遵循良好的軟體工程實踐。這樣,您就可以確保底層框架不會悄無聲息地消亡,從而讓您的應用程式面向未來。
最後,即使您決定不使用其中一個,熟悉一個或多個現代 PHP 框架也是一個好主意。研究它們是學習和提高軟體開發技巧的絕佳方法,並幫助您在不斷發展的 PHP 開發世界中保持領先地位。
以上是使用 PHP 框架的優點和缺點:它適合您嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!