FQCN
FQCN (Fully Qualified Class Name) 是類別的完整名稱,因此命名空間在類別名稱的前面。
例如 : Symfony\Component\HttpFoundation\Request
以上的類別名稱是 Request ,結合起來就變成 FQCN。
MVC
MVC 的意思是 模型 - 視圖 - 控制器。
這是一個組織應用程式的方法,把應用程式分為三個部分:
- 模型,代表資料(資料庫)
- 視圖,為了顯示資訊(範本)
- 控制器,包含商業邏輯(程式碼)
Type-hint
在 Symfony 的應用程式裡面,type-hint 可在控制器或類別建構函式的參數裡宣告。
宣告後,由 Symfony 分析並找到相對應的服務,且為控制器或服務提供實例。
控制器
例如,在控制器的參數中:
#[Route('/new', name: 'app_article_crud_new', methods: ['GET', 'POST'])]public function new( Request $request, // <-- 特別的 Type-hint : 提供進入要求 EntityManagerInterface $entityManager, // <-- Type-hint SluggerInterface $slugger // <-- Type-hint): Response{ //...}服務
class NewsletterService{ public function __construct( private MailerInterface $mailer, // <-- Type-hint private string $adminEmail ) { }
//...}可使用 autowired 類型之 type-hint
Slug
Slug 是個沒有空間、重音符號、特殊字母的字串,可在網址或檔案名稱裡使用。
比如說文章的標題是:
Découvrez l'injection de dépendances dans Symfony
那相對應的 slug 可能是:
decouvrez-l-injection-de-dependances-dans-symfony
也可瀏覽以下的網址:
https://domain.com/articles/decouvrez-l-injection-de-dependances-dans-symfony
Recipe(設定範本)
在 Symfony 應用程式中,設定範本用於在安裝套件時,預先完成相關設定,並由 Symfony Flex 工具自動執行。
Symfony Flex 是一個 Composer 外掛程式:當用 composer require XXX 安裝套件時,Symfony Flex 會尋找套件有沒有相對應的設定範本。設定範本可包含組態檔案,或專案內需建立的檔案,目的是讓 Symfony 應用程式的套件整合更容易。
介面類型
在物件導向程式設計中,介面類型是一種抽象的類型:裡面只有函式的簽章。因此,所有實作的類別必須提供函式的定義。
例子
我想開發一個通知系統。當事件被觸發時,我想通知使用者或管理員。
但傳送通知的方法有多種:簡訊、郵件、手機通知等等。
所以我會先定義一個抽象的介面類型,以描述通知系統的行為:
<?php
interface AlertInterface{ /** * 傳送通知 */ public function sendAlert();}接下來,如果我想定義怎麼傳送簡訊通知,可以建立一個類別,並宣告它實作 AlertInterface:
<?php
class SmsAlert implements AlertInterface{ public function sendAlert() { // 傳送簡訊 }}或者也可以定義郵件通知:
<?php
class EmailAlert implements AlertInterface{ public function sendAlert() { // 傳送郵件 }}因此,AlertInterface 裡面只會描述通知系統的行為,也可定義實作這個介面類型的類別,以達成不同通知的方式。
Polyfill
polyfill 可在特定的版本中,使用較新的版本中出現的功能,並模擬它們。
例如,在 PHP 7 中,無法使用 PHP 8 中的功能。
但若用 Symfony 的 PHP 8.0 Polyfill 套件,就可使用 str_contains 函式,因為這個函式出現在 PHP 8.0 中,所以 Symfony 中已有一個 polyfill 來模擬它。