Do You PHP はてブロ

Do You PHPはてなからはてブロに移動しました

Symfony2のコントローラをサービス化した時のRouteアノテーション

ほとんど個人的備忘録。
"symfony2 controller service"あたりでググってみると色々と出てきますが、以下のサイトにうまくまとめられています。

ポイントは以下の3つ。

  • コントローラはSymfony\Bundle\FrameworkBundle\Controller\Controllerクラスのサブクラスである必要はない
  • コントローラを他のサービスクラスと同様、services.xmlに登録する
  • コントローラのRouteアノテーションに上で登録したサービスIDを指定する

これでうまく動作するんですが、最後のRouteアノテーションでの指定方法

<?php
/**
 * @Route(service = "matthias_registration.registration_controller")
 */

がどこから出てきたのか?ドキュメントに載ってないし疑問だったんですが、どうやらver.2.0版のドキュメントではなく、master版に記載されていました。

ちなみに、

<?php
/**
 * @Route("/test", service = "matthias_registration.registration_controller")
 */

といった他のオプションを付けることもできます。