在社群媒體上,經常有新的 PHP 開發者問“我的專案應該使用什麼框架”,通常給出的答案是“Laravel”或“Symfony”。
雖然這些都是不錯的選擇,但這個問題的正確答案應該是「你需要框架做什麼?」
正確的框架應該能夠滿足您的需要,並且不包含大量您永遠不會使用的功能。
如果你正在製作一個只有單一路線的網站,使用 Laravel 或 Symfony 會對網站進行過度設計,而對於複雜的網站,Laravel 或 Symfony 可能是正確的選擇。
微型框架非常適合建立不需要全端框架提供的所有功能的中小型網站。
雖然很多,但 Slim 和 Flight PHP 都是微框架的絕佳範例。
最近我建立了一個小網站,要求使用者解決 10 個與資料庫相關的問題。它有三種路線和一些基本查詢來獲取問題並比較答案。
對於這樣的小項目,微框架是一個不錯的選擇。我在 Slim 和 Flight PHP 上都建立了網站來比較它們。
如果您之前沒有使用過特定框架,那麼使用提供的框架專案通常是一個很好的起點。
Flight PHP 的骨架專案幾乎符合我的預期,重量輕,MVC 設定簡單,易於理解資料夾結構並知道專案中的所有內容應該放在哪裡。
對於剛接觸該框架的人來說,啟動和運行的學習曲線很小。
關於composer庫,總共只有5個(包括核心庫),4個用於生產。
骨架的製作大小為 1.6Mb。
Slims 骨架專案讓我大吃一驚,目錄結構比我預想的還要複雜。更適合用於大型專案而不是小型專案的結構。對於微框架來說,這是出乎意料的。
Slim 骨架比 Flight PHP 重一點。 21 個作曲家庫,其中 9 個用於生產。該項目的生產大小為 3.3Mb。
兩者都是開箱即用,只需要最少的額外配置。
我決定不使用骨架,而是透過建立自己的設定來建立網站。這樣做的好處是我能夠根據自己的需求自訂框架,並了解它們對於不同結構的靈活性。
使用微型框架的一大優勢是能夠建立它們來完全滿足您的需求,而無需不必要的開銷,並在需要時添加功能和程式庫。
我對 Flight PHP 的設定與框架沒有顯著不同,雖然我最終得到了更少的目錄和不同的作曲家庫,但結構上是相似的。
使用 Slim,項目的結構最終與骨架顯著不同。
Slim 很靈活,沒有對結構做出假設,並且在與骨架完全不同的結構下運作得很好。
Flight PHP 在這種方式上也很靈活,如果需要的話允許更複雜的結構,向框架中添加新的庫是直接的。
路由
從路由的角度來看,兩者都很好合作。它們都很容易設置,無需閱讀太多文件。
Flight PHP 中的路線設定比 Slim 稍微簡單一些,而且使用的程式碼更少,但設定起來都不難。
路由組、正規表示式功能和中間件選項使路由變得靈活,同時仍易於使用。
資料庫連線
使用Slim,期望您應該使用像Eloquent 或Doctrine 這樣的ORM 來進行資料庫查詢,而Flight PHP 為PDO 提供了一個簡單的包裝器,可以在以下情況下使用:您需要並且可以選擇將Active Record 新增至專案中以進行查詢建置。
對於像我正在從事的項目這樣的小項目,使用 ORM 似乎有點多餘,所以我最終為 Slim 構建了一個小型 PDO 包裝類,類似於 Flight PHP 中內置的類.
ORM 很棒,但內建靈活性來選擇我希望如何編碼資料庫查詢是一個很好的功能。
一般編碼
Slim 和 Flight PHP 框架都擅長讓您以自己的方式編寫程式碼。
一些框架往往會強迫您以特定的方式進行編碼,有時您會感覺自己正在與框架作鬥爭。
框架應該與你合作而不是與你作對,這兩個框架都感覺像是在與我合作。
Slim 還提供了許多方便的附加元件,包括 CSRF 整合和 HTTP 快取。
Flight PHP 提供了額外的附加元件,包括權限和活動記錄。
所有這些附加元件都是有用的附加元件,無需使用第 3 方解決方案或建立您自己的解決方案。
在 Flight PHP 中返回 JSON 作為回應比在 Slim 中更乾淨,Slim 3 有一個方便的 withJson 回應。雖然 Slim 4 更遵循 PSR-7,但這確實意味著建立 JSON 回應需要更多程式碼。
如果我要經常使用 JSON 回應,我可能會建立一個包裝器以使其更加方便,同時仍然遵守 PSR-7 標準。
這是兩個框架之間的顯著差異,Slim 感覺它需要透過建立類別來清理和簡化程式碼庫來進行更多定制,而 Flight PHP 已經為您做到了這一點。
Slim 提供了許多輔助中介軟體。為了使某些功能正常運作,需要中間件。
一個例子是使用 FETCH 從 Javascript 取得資料。 Slim 有一個 getParsedBody 方法來根據 POST 請求建立資料數組。
但是,為了使用它,需要將 addBodyParsingMiddleware 加入到容器中。
這對新開發人員來說有點陷阱,但也提供了對可選功能的訪問,這可以透過僅啟用您需要的功能來降低框架的整體佔用空間。
Flight PHP 透過設定檔實現這一點,一些功能可以透過配置而不是透過中間件啟用來開啟和關閉。
速度測試
根據基準測試,比較兩者有有趣的結果,Slim 在某些方面勝過 Flight PHP,而 Flight PHP 在其他方面勝過 Slim。
在我自己的程式碼上對這兩個框架進行測試表明,Flight PHP 比 Slim 具有更快、更一致的回應時間。
前端
GET 請求回傳 JSON
POST 請求回傳 JSON
我發現值得注意的是使用 Slim 時的異常峰值。
多次執行這些測試每次都會產生與我上面顯示的結果相似的結果,兩者的反應時間通常都很好,但在Slim 中出現異常峰值,而在測試Flight PHP 時不會出現這種情況,且Flight PHP 通常具有更好的回應時間回應時間。
如果您還沒有嘗試過微框架,請嘗試一下,那裡有一些框架,嘗試它們並看看每個框架中您喜歡什麼和不喜歡什麼,這可能是一次很棒的學習經歷一。
Slim 和 Flight PHP 都是很棒的微型框架。
Slim 是一個堅實的框架,具有一些不錯的功能,可以安靜地為您工作。
Flight PHP 重量更輕,其簡單性使得學習該框架變得非常容易。
良好的回應時間和更簡化的程式碼來實現相同的目標,使其成為微框架使用的一個非常好的選擇。
將這兩個放在一起後,我確實更喜歡 Flight PHP 而不是 Slim,但與任何框架一樣,嘗試一下,看看它是否適合您。
畢竟,正確的框架是一個能夠完成您需要它做的事情的框架。
PHP 航班
纖薄的框架
以上是Slim 和 Flight PHP 框架比較的詳細內容。更多資訊請關注PHP中文網其他相關文章!