跳到內容

合約組件

編輯此頁面

合約組件提供了一組從 Symfony 組件中提取出來的抽象概念。它們可以用於建立在 Symfony 組件證明有用的語義之上 - 並且已經有經過實戰測試的實作。

安裝

合約以獨立套件的形式提供,因此您可以僅安裝您的專案真正需要的套件

1
2
3
4
5
6
$ composer require symfony/cache-contracts
$ composer require symfony/event-dispatcher-contracts
$ composer require symfony/deprecation-contracts
$ composer require symfony/http-client-contracts
$ composer require symfony/service-contracts
$ composer require symfony/translation-contracts

注意

如果您在 Symfony 應用程式外部安裝此組件,您必須在程式碼中載入 vendor/autoload.php 檔案,以啟用 Composer 提供的類別自動載入機制。請閱讀這篇文章以取得更多詳細資訊。

用法

此套件中的抽象概念對於實現鬆散耦合和互操作性非常有用。透過使用提供的介面作為類型提示,您能夠重複使用任何符合其合約的實作。它可以是 Symfony 組件,或是 PHP 社群廣泛提供的另一個套件。

根據其語義,某些介面可以與自動裝配結合使用,以將服務無縫注入到您的類別中。

其他介面可能作為標籤介面很有用,用於提示關於特定行為,該行為在使用自動配置或手動服務標籤(或您的框架提供的任何其他方式)時可以啟用。

設計原則

  • 合約按領域劃分,每個領域都有自己的子命名空間;
  • 合約是小型且一致的 PHP 介面、特徵、規範性文件區塊和參考測試套件(如果適用)...;
  • 合約必須具有經過驗證的實作才能進入此儲存庫;
  • 合約必須與現有的 Symfony 組件向後相容。

實作特定合約的套件應在其 composer.json 檔案的 provide 區段中列出它們,使用 symfony/*-implementation 慣例。例如

1
2
3
4
5
6
{
    "...": "...",
    "provide": {
        "symfony/cache-implementation": "3.0"
    }
}

常見問題

這與 PHP-FIG 的 PSR 有何不同?

如果適用,提供的合約建立在 PHP-FIG 的 PSR 之上。但是,PHP-FIG 有不同的目標和不同的流程。Symfony 合約專注於提供本身就有用的抽象概念,同時仍與 Symfony 提供的實作相容。

這項工作,包括程式碼範例,根據 Creative Commons BY-SA 3.0 授權條款授權。
目錄
    版本