[PHP]MVC(Model-View-Controller)란?

이채원·2025년 3월 20일

PHP

목록 보기
1/1
post-thumbnail

🍀MVC란?

MVC는 Model-View-Controller의 약자이며,
웹 애플리케이션을 구조화하는데 자주 사용되는 디자인 패턴이다.


이렇게 역할을 나누면 코드가 훨씬 깔끔해지고 유지보수와 협업이 쉬워진다.

📖MVC 구조 흐름

사용자가 브라우저에서 URL을 요청하면 다음과 같은 흐름으로 처리된다.

[사용자] → [Controller] → [Model] → [DB 조회] → [Model] → [Controller] → [View] → [사용자에게 HTML 반환]

👉MVC 구조 예제

1. Controller - 사용자의 요청을 받는 핵심 관리자

-사용자가 /board로 접속하면 Board 컨트롤러의 index()함수가 호출됨
-이 안에서 BoardModel을 불러와 게시글을 가져오고
-board_list라는 View에 데이터를 넘김

<?php

namespace App\Models;
use CodeIgniter\Model;

class BoardModel extends Model
{
    protected $table = 'posts';   // 연결할 DB 테이블명

    // 게시글 전체 조회 함수
    public function getPosts()
    {
        return $this->findAll();  // SELECT * FROM posts;
    }
}

2.Model - 실제 데이터 처리 (DB연동)

-데이터베이스의 posts 테이블과 연결된 모델
-getPosts() 함수는 게시글 전체를 조회하는 로직을 포함

<!DOCTYPE html>
<html>
<head>
    <title>게시판</title>
</head>
<body>
    <h1>게시글 목록</h1>
    <ul>
        <?php foreach ($posts as $post): ?>
            <li><?= esc($post['title']) ?></li>
        <?php endforeach; ?>
    </ul>
</body>
</html>

3.View - 사용자에게 보여줄 HTML

-컨트롤러에서 넘겨준 $posts 데이터를 반복문으로 출력
-esc()함수는 XSS공격을 막기 위한 CodeIgniter의 출력 함수

<!DOCTYPE html>
<html>
<head>
    <title>게시판</title>
</head>
<body>
    <h1>게시글 목록</h1>
    <ul>
        <?php foreach ($posts as $post): ?>
            <li><?= esc($post['title']) ?></li>
        <?php endforeach; ?>
    </ul>
</body>
</html>

😁디렉토리 구조 예시

/app
├── /Controllers
│ └── Board.php
├── /Models
│ └── BoardModel.php
├── /Views
│ └── board_list.php

😎마무리

MVC 패턴은
1. 코드가 역할별로 분리되어 있어 수정이 쉽고 유지보수가 용이하다.
2. 기능이 커져도 구조적으로 유연하게 대응이 가능해 확장성이 넓다.
3. 프론트엔드, 백엔드 작업 분리가 쉬워 협업 효율이 올라간다.
4. 각 파트를 독립적으로 테스트 할 수 있다.(테스트 용이)

profile
풀스택을 목표로하는 개발자 이채원입니다.

0개의 댓글