簡介
Symfony 是一組可重複使用的獨立、解耦且具凝聚力的 PHP 組件,可解決常見的 Web 開發問題。
除了使用這些底層組件,您也可以使用基於這些組件且隨時可用的 Symfony 全端 Web 框架... 或者您可以建立自己的框架。本教學課程是關於後者。
為什麼您想要建立自己的框架?
為什麼您一開始就想要建立自己的框架? 如果您環顧四周,大家都會告訴您重新發明輪子是件壞事,而且您最好選擇現有的框架,完全忘記建立自己的框架。 大多數時候他們是對的,但有一些很好的理由可以開始建立您自己的框架
- 為了更深入了解現代 Web 框架的底層架構,特別是 Symfony 全端框架的內部結構;
- 為了建立一個為您的非常特定需求量身定制的框架(首先請確保您的需求確實非常特殊);
- 為了好玩而實驗性地建立框架(以學習後即拋棄的方式);
- 為了重構需要大量近期 Web 開發最佳實務的舊有/現有應用程式;
- 向世界證明您實際上可以自行建立框架(...但只需 sedikit 努力)。
本教學課程將逐步引導您建立 Web 框架。 在每個步驟中,您都將擁有一個完整運作的框架,您可以直接使用或作為您自己框架的起點。 它將從一個簡單的框架開始,並隨著時間的推移添加更多功能。 最終,您將擁有一個功能齊全的全端 Web 框架。
而且每個步驟都將是進一步了解某些 Symfony 組件的機會。
許多現代 Web 框架都宣傳自己是 MVC 框架。 本教學課程不會討論 MVC 模式,因為 Symfony 組件能夠建立任何類型的框架,而不僅僅是遵循 MVC 架構的框架。 無論如何,如果您看看 MVC 的語義,本書是關於如何建立框架的 Controller 部分。 對於 Model 和 View,這真的取決於您的個人品味,您可以使用任何現有的第三方函式庫(Model 使用 Doctrine、Propel 或 plain-old PDO;View 使用 PHP 或 Twig)。
建立框架時,遵循 MVC 模式並不是正確的目標。 主要目標應該是關注點分離; 這可能是您真正應該關心的唯一設計模式。 Symfony 組件的基本原則是基於 HTTP 規範。 因此,您將要建立的框架應該更準確地標記為 HTTP 框架或請求/回應框架。
開始之前
閱讀關於如何建立框架的資訊是不夠的。 您必須跟著做,並實際輸入本教學課程中包含的所有範例。 為此,您需要最新版本的 PHP(7.4 或更高版本就足夠了)、Web 伺服器(例如 Apache、nginx 或 PHP 內建的 Web 伺服器)、良好的 PHP 知識以及對物件導向程式設計的理解。
準備好了嗎? 繼續閱讀!
啟動引導
在您甚至考慮建立第一個框架之前,您需要考慮一些慣例:您將在哪裡儲存程式碼、您將如何命名類別、您將如何引用外部相依性等等。
若要儲存您的新框架,請在您機器上的某處建立一個目錄
1 2
$ mkdir framework
$ cd framework
相依性管理
若要安裝框架所需的 Symfony 組件,您將使用 Composer,這是一個 PHP 的專案相依性管理器。 如果您還沒有安裝,請立即下載並安裝 Composer。
我們的專案
我們不會從頭開始建立框架,而是會一遍又一遍地編寫相同的「應用程式」,每次添加一個抽象層。 讓我們從我們在 PHP 中可以想到的最簡單的 Web 應用程式開始
1 2 3 4
// framework/index.php
$name = $_GET['name'];
printf('Hello %s', $name);
您可以使用 Symfony 本機 Web 伺服器在瀏覽器中測試這個很棒的應用程式 (https://127.0.0.1:8000/index.php?name=Fabien
)
1
$ symfony server:start
在下一章中,我們將介紹 HttpFoundation 組件,並了解它為我們帶來什麼。