The Components implement common features needed to develop websites. They are the foundation of the Symfony full-stack framework, but they can also be used standalone even if you don’t use the framework as they don’t have any mandatory dependencies.

(訳)Symfonyコンポーネントは、Webサイトを構築するための共通機能を実装しています。Symfonyフルスタックフレームワークの基盤として利用されていますが、必須の外部依存がないため、Symfonyフレームワークを使わない環境でも、スタンドアローンで利用できます。
The Components - Symfony

Symfonyフレームワークの根幹部分であるカーネルとバンドルシステムについて、以前の記事(Symfonyのカーネルの役割とバンドルシステム)で紹介しました。カーネルやバンドルシステムなどの背後に、再利用性の高いパッケージ群であるSymfonyコンポーネントがあります。次の図のように、カーネルやバンドルの内部で直接または間接的に、Symfonyコンポーネントの機能が利用されています。Kernel, Request, Response等のクラスの実装自体もSymfonyコンポーネント内にありますが、アプリケーション開発者が実際に実装を行うバンドルから見れば、Symfonyコンポーネントは単なるライブラリです。Symfony Standard EditionにはSymfonyコンポーネント以外のPHPライブラリもバンドルされていますが、それらとSymfonyコンポーネントは同列のものです。

Symfony 2.0では、Symfonyコンポーネントとして以下のものがあります。

  • BrowserKit
  • ClassLoader
  • Config
  • Console
  • CssSelector
  • DependencyInjection
  • DomCrawler
  • EventDispatcher
  • Filesystem
  • Finder
  • Form
  • HttpFoundation
  • HttpKernel
  • Locale
  • Process
  • Routing
  • Security
  • Serializer
  • Templating
  • Translation
  • Validator
  • Yaml

注目すべきは、HttpFoundation(この中にRequestやResponseがある)やHttpKernel, RoutingといったWebアプリケーションフレームワークを構成する基礎機能を、コンポーネントとして単独利用できる点です。実際にこれらのSymfonyコンポーネントはすでに他のプロダクトでの利用も広がってきており、たとえばCMS Drupalの次期バージョンではHttpFoundationコンポーネントを採用するといった事例が増えています。

また、Symfonyコンポーネントを使えば、Symfony2とは違う思想のWebアプリケーションフレームワークを手軽に実装することも可能です。実際にSymfonyコンポーネントを利用したフレームワークには次のようなものがあります。

利用方法

Symfonyコンポーネントを利用するには、主に次の3つの手順があります。

  • GitHubのリポジトリからソースコードを取得する
  • PEARでインストールする
  • Composerでインストールする

たとえばComposerを使う場合は、Create your own framework - Symfony コンポーネントの上に (パート 1)に簡単な手順の説明があります。どの方法を利用する場合でも、PSR-0対応のオートローダーの利用が前提となっています。

各コンポーネントの利用方法については、Symfony公式ドキュメント内にあります(まだドキュメントのないコンポーネントもあります)。