Symfonyコンポーネントとは
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コンポーネントを利用したフレームワークには次のようなものがあります。
- Silex
- Simplex (Symfonyリードデベロッパー Fabien Potencier氏が執筆したSymfonyコンポーネントの使い方を解説する記事で作られたフレームワーク)
- Symfonyコンポーネント、Lithium, Zend Frameworkのコンポーネントを使ってフレームワークを作るスライド
利用方法
Symfonyコンポーネントを利用するには、主に次の3つの手順があります。
- GitHubのリポジトリからソースコードを取得する
- PEARでインストールする
- Composerでインストールする
たとえばComposerを使う場合は、Create your own framework - Symfony コンポーネントの上に (パート 1)に簡単な手順の説明があります。どの方法を利用する場合でも、PSR-0対応のオートローダーの利用が前提となっています。
各コンポーネントの利用方法については、Symfony公式ドキュメント内にあります(まだドキュメントのないコンポーネントもあります)。