// この全体が密結合:Symfony移行時にリファクタ必要 } } <?php // App/Http/Controllers/UserController.php use App\Models\User; // Eloquent Modelへの直接依存:コントローラーがORMを直接操作 class UserController extends Controller // Laravel固有Controller継承 { public function store(Request $request): JsonResponse // Laravel固有Request/Response使用 { try { // 例外ハンドリングでビジネスロジックを制御 // 問題:Model のスタティックメソッドを直接呼び出し $user = User::createWithValidation($request->all()); // ControllerがModelの内部実装を知っている return response()->json([ // Laravel固有のJSONレスポンス生成 'id' => $user->id, // 問題:Model の属性に直接アクセス 'name' => $user->name, // カプセル化されていないデータアクセス 'email' => $user->email, // ビジネスルールが無い直接アクセス 'can_create_post' => $user->canCreateNewPost() // Model のメソッド呼び出し:Controllerがビジネスロジックを直接利用 ], 201); } catch (ValidationException $e) { // Laravel固有例外のキャッチ return response()->json([ // エラーレスポンスもLaravel固有方式