Symfonyのコントローラ活用まとめ!構成と実装のコツを初心者向けに解説
生徒
「Symfonyでコントローラっていうのがよく出てきますが、これは何ですか?」
先生
「Symfonyのコントローラは、ユーザーがWebサイトで何かアクションを起こしたときに、その処理を担当する部分です。」
生徒
「なんだか難しそうですね…。初心者でも使いこなせますか?」
先生
「大丈夫ですよ。身近な例でたとえながら、Symfonyのコントローラの構成と実装のポイントをわかりやすく解説していきますね!」
1. Symfonyのコントローラとは?
Symfony(シンフォニー)は、PHPというプログラミング言語で作られたWebアプリケーションフレームワークです。コントローラは、その中で中心となる「指令役(しれいやく)」のような存在です。
たとえば、あなたがレストランに入り「ハンバーグを注文」したとします。この「注文」がWebでいうところのリクエストです。
コントローラは、そのリクエストを受け取り、キッチン(プログラム内部)に「ハンバーグを作って!」と指示を出し、最後に料理(レスポンス)をあなたに届けます。
つまり、コントローラはユーザーの操作と画面の結果をつなぐ大事な役割を担っているのです。
2. Symfonyでコントローラを作る基本構成
Symfonyのコントローラは、PHPのクラスという単位で作られます。クラスの中に、リクエストを処理する関数(メソッド)を定義します。
以下がシンプルなコントローラの例です。
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
class HelloController
{
#[Route('/hello', name: 'hello')]
public function sayHello(): Response
{
return new Response('こんにちは、Symfony!');
}
}
このコードでは、/helloというURLにアクセスしたとき、「こんにちは、Symfony!」と表示される仕組みになっています。
3. コントローラの構成をひとつずつ理解しよう
上記のコードを初心者向けに分解して説明します。
- use文:必要な機能(部品)を読み込む宣言です。
- class HelloController:コントローラの名前です。「HelloController」というクラスを作っています。
- #[Route('/hello', name: 'hello')]:この関数がどのURLに対応しているかを指定しています。
- public function sayHello():関数(メソッド)の定義です。
/helloにアクセスするとこの関数が動きます。 - Response:表示する内容をWebページに返すためのオブジェクトです。
4. コントローラの命名ルールとフォルダ構成
Symfonyでは、コントローラは通常、src/Controllerというフォルダに保存します。
ファイル名は「〇〇Controller.php」のように、最後にControllerをつけるのが一般的です。
例:
HomeController.phpProductController.php
こうすることで、あとで見返したときにどれがコントローラか一目でわかるようになります。
5. 複数のURLをまとめて管理したいとき
Symfonyでは、ひとつのコントローラ内に複数の関数を定義して、それぞれに違うURLを割り当てることができます。
class PageController
{
#[Route('/about', name: 'about')]
public function about(): Response
{
return new Response('このサイトについて');
}
#[Route('/contact', name: 'contact')]
public function contact(): Response
{
return new Response('お問い合わせページ');
}
}
このように、1つのクラスでいろいろなページを管理できるので、整理されたコード構成になります。
6. コントローラにデータを渡す方法
Webアプリでは、ユーザーが入力した情報や、クリックした内容に応じて動的に処理する必要があります。
Symfonyでは、URLの一部を変数として受け取ることができます。
#[Route('/hello/{name}', name: 'hello_name')]
public function sayHelloName(string $name): Response
{
return new Response("こんにちは、" . $name . "さん!");
}
/hello/Taro にアクセスすると、「こんにちは、Taroさん!」と表示されるようになります。
このように、URLに名前を入れることでパーソナルな対応が可能になります。
7. Symfonyのコントローラを使うコツと注意点
初心者がSymfonyのコントローラを活用するときのポイントをまとめます。
- クラス名とファイル名は一致させる:Symfonyでは自動的にクラスを見つけるので、名前を揃えるとトラブルが減ります。
- 関数は役割ごとに分ける:ひとつの関数にたくさんの処理を書かないようにしましょう。
- URL設計はシンプルに:ユーザーが使いやすいURLにしましょう(例:
/newsや/profileなど)。 - エラー対策:前回の記事のように、
try-catchを使って例外処理を忘れずに。
8. 実際にコントローラを作ってみよう!
ここまでの説明をもとに、自分のSymfonyプロジェクトにコントローラを追加してみましょう。
最初は「こんにちは」と表示するだけでもOKです。まずは動くことを確認するのが大切です。
その後、URLのパラメータを使ったり、複数ページを管理したり、少しずつレベルアップしていきましょう。