【2026年最新】php artisan make:controller 完全ガイド | Laravel 12対応のコントローラー作成方法

チートシート

📋 ← Laravel artisanコマンド全一覧に戻る

この記事では、php artisan make:controllerコマンドについて、
基本的な使い方から実務での応用パターン、よくあるエラーまで徹底解説します。

💡 他のコマンドも知りたい方は artisanコマンド完全チートシート をご覧ください

1. make:controllerコマンドとは

Laravelでコントローラーを作成する際に使用するArtisanコマンドです。
手動でファイルを作成する必要がなく、一瞬でテンプレートが生成されます。

この記事で学べること:

  • よくあるエラーの解決方法
  • 基本的なコントローラーの作成方法
  • リソースコントローラーの作成
  • API用コントローラーの作成
  • 実務で使える応用パターン

2. 基本的な使い方

最もシンプルな使い方

php artisan make:controller UserController

生成されるファイル:
app/Http/Controllers/UserController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class UserController extends Controller
{
    //
}

サブディレクトリに作成

php artisan make:controller Admin/UserController

生成先: app/Http/Controllers/Admin/UserController.php

3. よく使うオプション一覧

オプション説明使用例
--resourceCRUD操作のメソッドを自動生成make:controller UserController --resource
--apiAPI用のリソースコントローラー(create/edit除外)make:controller ApiUserController --api
--model=Userモデルと紐付け(タイプヒント自動追加)make:controller UserController --model=User --resource
--invokable単一アクションコントローラーmake:controller ShowProfile --invokable
--parent=Userネストしたリソース用make:controller CommentController --parent=Post --resource

4. 実務でよく使うパターン

パターン1: リソースコントローラー(最も一般的)

php artisan make:controller UserController --resource --model=User

生成されるメソッド:

public function index()    // 一覧表示
public function create()   // 作成フォーム
public function store()    // 保存処理
public function show($id)  // 詳細表示
public function edit($id)  // 編集フォーム
public function update($id) // 更新処理
public function destroy($id) // 削除処理

ルート定義:

Route::resource('users', UserController::class);

これだけで7つのルートが自動生成されます。

パターン2: API専用コントローラー

php artisan make:controller Api/UserController --api --model=User

特徴:

  • create()edit() メソッドが無い(API不要)
  • JSON返却前提の構成

実務での使い方:

// routes/api.php
Route::apiResource('users', Api\UserController::class);

パターン3: 単一アクションコントローラー(Invokable)

こんな時に使う:

  • メール送信処理
  • PDF生成処理
  • 単発のバッチ処理
php artisan make:controller SendNewsletterController --invokable

生成されるコード:

public function __invoke(Request $request)
{
    // 単一の処理を記述
}

ルート定義:

Route::post('/newsletter', SendNewsletterController::class);

パターン4: ネストしたリソース

ユースケース: 記事のコメント管理(/posts/{post}/comments

php artisan make:controller CommentController --parent=Post --resource --model=Comment

生成されるメソッドの特徴:

public function index(Post $post)  // 特定記事のコメント一覧
public function store(Request $request, Post $post)  // 特定記事へコメント追加

ルート定義:

Route::resource('posts.comments', CommentController::class);

5. 実務での注意点とベストプラクティス

5-1. コントローラーは薄く保つ

悪い例:

public function store(Request $request)
{
    // バリデーション
    // DB操作
    // メール送信
    // ログ記録
    // 100行以上のロジック...
}

良い例:

public function store(StoreUserRequest $request)
{
    $user = $this->userService->create($request->validated());

    return redirect()->route('users.show', $user);
}

ポイント:

  • ビジネスロジックはServiceクラスへ
  • バリデーションはFormRequestへ
  • コントローラーは「交通整理」に専念

5-2. 名前空間の整理

プロジェクトが大きくなったら:

app/Http/Controllers/
├── Admin/
│   ├── UserController.php
│   └── PostController.php
├── Api/
│   └── V1/
│       └── UserController.php
└── Front/
    └── HomeController.php

6. よくあるエラーと対処法

エラー1: “Class not found”

原因:

// routes/web.php
Route::get('/users', 'UserController@index');  // Laravel 8以降は非推奨

解決策:

use App\Http\Controllers\UserController;

Route::get('/users', [UserController::class, 'index']);

エラー2: “Target class [UserController] does not exist”

原因: 名前空間の指定ミス

確認ポイント:

// コントローラーファイルの冒頭
namespace App\Http\Controllers;  // ← これが正しいか確認

// ルートファイル
use App\Http\Controllers\UserController;  // ← use文があるか確認

エラー3: コントローラーが上書きされた

状況:

php artisan make:controller UserController
# 既に存在していた場合

対処法:

# --forceオプションで強制上書き(注意!)
php artisan make:controller UserController --force

⚠️ 既存のコードが消えるので、必ずGit管理下で実行

8. チートシート(コピペ用)

# 基本
php artisan make:controller UserController
# リソース(CRUD)
php artisan make:controller UserController --resource --model=User
# API専用
php artisan make:controller Api/UserController --api --model=User
# 単一アクション
php artisan make:controller ProcessPaymentController --invokable
# ネストしたリソース
php artisan make:controller CommentController --parent=Post --resource
# サブディレクトリ
php artisan make:controller Admin/UserController
# 強制上書き
php artisan make:controller UserController --force

9. 関連するArtisanコマンド

コントローラーと一緒によく使うコマンド:


まとめ

php artisan make:controllerは、Laravelでコントローラーを作成する最も基本的なコマンドです。

実務で覚えておくべきパターン:

  1. 通常のCRUD--resource --model=User
  2. API開発--api --model=User
  3. 単発処理--invokable

手作業でファイルを作るより、Artisanコマンドを使った方が:

  • タイポが無くなる
  • 命名規則が統一される
  • 開発速度が3倍以上になる

まずは基本的な使い方をマスターして、徐々にオプションを使いこなしていきましょう。

Source

タイトルとURLをコピーしました