0Pricing
PHP Academy · レッスン

コントローラーとアクション

artisanでコントローラーを作成し、アクションメソッドでリクエストを処理します

「コントローラーとアクション」はCoddyKit上の無料PHP Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはPHP Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 PHP Academyコースには全4レッスンが含まれています。

コントローラーとは

コントローラーは、関連するリクエスト処理ロジックをまとめるものです。ルートファイルにクロージャを記述する代わりに、コントローラーのメソッド(アクション)に処理を委譲します。

コントローラーの生成

Artisan を使用してコントローラーのひな形を生成します。

$ php artisan make:controller UserController
$ php artisan make:controller PostController --resource

基本的なコントローラー

コントローラーは Controller を継承し、各ルートアクションに対応する public メソッドを持ちます。

<?php
namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\User;

class UserController extends Controller
{
    public function index(): \Illuminate\View\View
    {
        $users = User::all();
        return view("users.index", compact("users"));
    }
}

リクエストへのアクセス

アクションメソッドで Illuminate\Http\Request を型指定すると、Laravel が自動的に注入します。

<?php
public function store(Request $request): \Illuminate\Http\RedirectResponse
{
    $name  = $request->input("name");
    $email = $request->input("email");
    User::create(["name" => $name, "email" => $email]);
    return redirect()->route("users.index");
}

フォームのバリデーション

$request->validate() を使用して入力を検証します。検証に失敗すると、Laravel はエラー情報とともに自動的に元のページへリダイレクトします。

<?php
public function store(Request $request): \Illuminate\Http\RedirectResponse
{
    $validated = $request->validate([
        "name"  => "required|string|max:255",
        "email" => "required|email|unique:users",
    ]);
    User::create($validated);
    return redirect()->route("users.index");
}

リソースコントローラーのメソッド

リソースコントローラーには、慣例的な 7 つのメソッドがあります。index、create、store、show、edit、update、destroy です。

単一アクションコントローラー

呼び出し可能なコントローラーには単一の __invoke() メソッドがあり、1 つの処理だけを行うアクションに適しています。

<?php
class SendWelcomeEmail extends Controller
{
    public function __invoke(User $user): void
    {
        Mail::to($user)->send(new WelcomeMail($user));
    }
}
// Route:
Route::post("/users/{user}/welcome", SendWelcomeEmail::class);

コントローラーのミドルウェア

コンストラクターで middleware() メソッドを使用すると、特定のアクションにミドルウェアを適用できます。

<?php
public function __construct()
{
    $this->middleware("auth")->except(["index", "show"]);
}

依存性の注入

アクションメソッドのパラメーターでサービスを型指定すると、Laravel がサービスコンテナから解決します。

<?php
public function store(Request $request, Mailer $mailer): JsonResponse
{
    // $mailer is auto-injected
}

レスポンスの返却

コントローラーは、ビュー、リダイレクト、JSON レスポンス、ファイルのダウンロードを返せます。

<?php
return view("users.show", compact("user"));
return redirect()->back()->with("status", "Saved!");
return response()->json($user);
return response()->download(storage_path("report.pdf"));

コントローラーの名前空間

デフォルトでは、すべてのコントローラーが App\Http\Controllers に配置されます。サブディレクトリを作成すると、サブ名前空間になります。例:App\Http\Controllers\Admin\UserController。

コントローラーを薄く保つ

コントローラーはビジネスロジックをサービスクラスまたはアクションに委譲する必要があります。コントローラーの役割は、入力を検証し、サービスを呼び出し、レスポンスを返すことだけにするのが理想です。

まとめ

Artisan でコントローラーを生成します。Request とサービスを型指定すると、自動的に注入されます。入力の検証には validate() を使用します。コントローラーは薄く保ち、処理をサービスに委譲します。

確認問題

リソースコントローラーを生成する Artisan コマンドは何ですか?

よくある質問

「コントローラーとアクション」レッスンは無料ですか?

はい。「コントローラーとアクション」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、PHP Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 PHP Academyコースには全4レッスンが含まれています。

「コントローラーとアクション」で何を学びますか?

artisanでコントローラーを作成し、アクションメソッドでリクエストを処理します ブラウザで直接実行するハンズオンコードでPHP Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

PHP Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのPHP Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「コントローラーとアクション」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このPHP Academyレッスンでコードを書いて実行できますか?

はい。すべてのPHP Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Laravelのプロジェクト構成
  2. Laravelでルートを定義する
  3. コントローラーとアクション
  4. Bladeテンプレートとビュー
← PHP Academyに戻る