BLOGカルテットコミュニケーションズ開発部ブログこの記事は公開されてから1年以上経過しています。情報が古い可能性がありますのでご注意ください。寛Tweetカルテット開発部の澤井です。久しぶりのブログに、何を書こうかと色々と考えました。悩んだ結果、やはり仕事で使う機会の多いSymfonyについて書こうと思います。具体的には、Symfonyのイベントを使って、機能を拡張する簡単な例について書きます。Docs)に詳しい解説があります。本記事では、以下のような要望について考えます。特定のページでは、コントローラから返された連想配列を、CSVファイルとしてダウンロード本記事の目標は、イベントを使うことで、CSVファイルをダウンロードするという機能を一箇所で管理して、変更がしやすく、再利用性の高いコードを実現することです。ちなみに、HTTPレスポンスヘッダに、以下の内容を指定することで、CSVファイルをダウンロードさせることができます。Content-Typeヘッダに、text/csvを指定Content-Dispositionヘッダに、attachmentを指定コントローラの実装まずは、@Templateアノテーションを使って、コントローラが返す連想配列を、テンプレートを使って表示します。次章で、CSVファイルとしてダウンロードする機能を、イベントを使って実現します。...}イベントの実装CSVファイルをダウンロードする機能を、Symfonyのビルトインイベントであるkernel.viewイベントを使って実装します。今回はサンプルなので、出力するデータは一次元配列かつカンマや改行などを含まないものとします。}}イベントを使うことで、CSVファイルをダウンロードする機能を、イベントリスナへ集約することができました。その結果、他のページでCSVファイルをダウンロードする機能が必要になったときに、個別にコントローラへダウンロード機能を追加する必要はありません。CSVファイルの文字コードを変換するといった、新たな要望が発生したときも、イベントリスナの修正だけで対応できます。まとめ今回は、イベントを使うことで、変更がしやすくて、再利用性の高いコードにすることができました。Symfonyは、色々な場面でイベントを使います。イベントに慣れて、上手に使うことが、Symfonyを使いこなすためのコツの1つかもしれません。簡単な例でしたが、本記事でイベントの利点が伝われば嬉しいです。TtskchTheme。