Hokma School :: Course 2 Laravel

Laravel 03. Controller

테디아저씨 2026. 4. 13. 22:18

 

1. Controller

"로직을 처리하는 부분"

"사용자 요청을 받아 모델(Model)과 상호작용하고, 결과를 뷰(View)나 JSON으로 반환하는 '중간 관리자' 역할을 수행"

 

1.1 컨트롤러 생성

php artisan make:controller PostController



# INFO  Controller [app/Http/Controllers/PostController.php] created successfully.

 

생성위치 app/Http/Controllers/PostController.php

 

1.2 컨트롤러 구조

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ShipmentController extends Controller
{
    //
}

 

1.3 Route 와  Controller

Route::get('/posts', [ShipmentController::class, 'index']);   // 목록
Route::get('/posts/create', [ShipmentController::class, 'create']); // 작성폼
Route::post('/posts', [ShipmentController::class, 'store']); // 저장

 

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ShipmentController extends Controller
{
    public function index(Request $request)
    {
         return 'Posts List'
    }
    
    public function create(Request $request)
    {
         return 'Post Form'
    }
    
    public function store(Request $request)
    {
         return 'Post Save'
    }
}

 

* Request $request  설명

"Request는 사용자가 보낸 모든 데이터를 담고 있는 객체"

 

# 일반적인 방식
$request->title

# 추천하는 방식
$request->input('title')

# 모든 데이터
$request->all()

 

기타사용자정보

$request->ip();

$request->getClientIp();

1.4 __invoke  단일 작업 컨트롤러 (Single Action Controller)

 

특정 컨트롤러가 하나의 기능(예: 대시보드 표시, 결제 처리 등)만 수행한다면 여러 메서드를 만들 필요가 없습니다.

이때 __invoke 메서드를 사용합니다.

 

// 단일작업 컨트롤러 생성

php artisan make:controller CarController --invokable

 

생성된 모양

<?php
namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ShipmentController extends Controller
{
    /**
     * Handle the incoming request.
     */
    public function __invoke(Request $request)
    {
        //
    }
}

 

사용시 function 을 지정하지 않고 사용합니다.

Route::get('/', ShipmentController::class);

 

 

"Laravel is an object-oriented (OOP) based framework, and all functions are composed of classes."

“Laravel은 객체지향(OOP) 기반 프레임워크이며, 모든 기능은 Class로 구성되어 있다”

 

<?php

class ShipmentController extends Controller

 

<?php

class User extends Model

 

 

그외에도 서비스, 미들웨어 등도 모두 class 로 되어있습니다.

 

클래스는

1. 재사용 가능

→ 같은 코드를 여러 곳에서 사용

2. 구조화

→ 역할별로 나누기 쉬움

3. 확장성

→ 기능을 추가하기 쉬움

 

클래스 vs 객체

 

클래스는 설계도이고, 객체는 그 설계도대로 사용되는것

 

중요한 이야기는 나중에 모델을 공부할때 하도록 하겠습니다.

 

 

 

 

 

 

RESTful