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

이렇게 역할을 나누면 코드가 훨씬 깔끔해지고 유지보수와 협업이 쉬워진다.
사용자가 브라우저에서 URL을 요청하면 다음과 같은 흐름으로 처리된다.
[사용자] → [Controller] → [Model] → [DB 조회] → [Model] → [Controller] → [View] → [사용자에게 HTML 반환]
-사용자가 /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;
}
}
-데이터베이스의 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>
-컨트롤러에서 넘겨준 $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. 각 파트를 독립적으로 테스트 할 수 있다.(테스트 용이)