
PHP ์จ๋ผ์ธ ๊ฐ์
>PHP - ์ค๊ธ
๐ PHP ์ค๊ธ - 7์ฃผ์ฐจ: MVC ํจํด์ ์ดํด ๋ฐ ์ ์ฉ- 02 ๊ฐ๋จํ MVC ๊ตฌ์กฐ๋ก ๊ฒ์ํ ๋ฆฌํฉํ ๋ง
![]() |
ํ์ | 10.0 | ๋ผ์ด์ผ์ค | free |
---|---|---|---|---|
์ฌ์ฉ์ํ์ | 10.0 | ์ด์์ฒด์ | ||
๋ค์ด๋ก๋ | 1 | ํ์ผํฌ๊ธฐ | 0 | |
์ ์์ฌ | LUZENSOFT | ๋ฑ๋ก์ผ | 2025-08-10 11:06:20 | |
์กฐํ์ | 7 |
๐ PHP ์ค๊ธ - 7์ฃผ์ฐจ: MVC ํจํด์ ์ดํด ๋ฐ ์ ์ฉ- 02 ๊ฐ๋จํ MVC ๊ตฌ์กฐ๋ก ๊ฒ์ํ ๋ฆฌํฉํ ๋ง
์ด๋ฒ ์๊ฐ์๋ ์ง๋ ์ฃผ์ ๋ฐฐ์ ๋ MVC ํจํด์ ์ค์ ๋ก #๊ฒ์ํ ๊ฐ๋ฐ์ ์ ์ฉํด ๋ณด๋ ์๊ฐ์ ๊ฐ๋๋ก ํ๊ฒ ์ต๋๋ค. ๊ธฐ์กด์ ์์ฑํ๋ ๊ฒ์ํ ์ฝ๋๋ฅผ #MVC ํจํด์ผ๋ก ๋ฆฌํฉํ ๋งํ์ฌ ๋ ํจ์จ์ ์ด๊ณ ์ ์ง๋ณด์๊ฐ ์ฉ์ดํ ๊ตฌ์กฐ๋ก ๊ฐ์ ํด ๋ด ์๋ค.
๊ธฐ์กด ๊ฒ์ํ ์ฝ๋์ ๋ฌธ์ ์
๊ธฐ์กด์ ์์ฑํ๋ ๊ฒ์ํ ์ฝ๋๋ ํ๋์ #PHP ํ์ผ ์์ HTML, CSS, JavaScript, ๊ทธ๋ฆฌ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ก์ง๊น์ง ๋ชจ๋ ์ฝ๋๊ฐ ํผ์ฌ๋์ด ์์์ต๋๋ค. ์ด๋ฌํ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์ ์ ์ ์ผ๊ธฐํฉ๋๋ค.
์ ์ง๋ณด์์ ์ด๋ ค์: ํน์ ๊ธฐ๋ฅ์ ์์ ํ๋ ค๋ฉด ๊ด๋ จ๋ ๋ชจ๋ ์ฝ๋๋ฅผ ์ฐพ์์ผ ํ๋ฏ๋ก, ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๊ณ ์ค์๋ฅผ ์ ๋ฐํ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค.
์ฌ์ฌ์ฉ์ฑ์ ํ๊ณ: ๋ค๋ฅธ ํ์ด์ง์์ ๊ฒ์ํ ๋ก์ง์ ์ฌ์ฌ์ฉํ๊ธฐ ์ด๋ ต์ต๋๋ค.
๊ฐ๋ ์ฑ ์ ํ: ์ฝ๋๊ฐ ๋ณต์กํ๊ฒ ์ฝํ ์์ด ์ฝ๊ณ ์ดํดํ๊ธฐ๊ฐ ์ด๋ ต์ต๋๋ค.
MVC ํจํด ์ ์ฉ์ ์ฅ์
#MVC ํจํด์ ์ ์ฉํ๋ฉด ์์ ๊ฐ์ ๋ฌธ์ ์ ๋ค์ ํด๊ฒฐํ ์ ์์ต๋๋ค. ๊ฐ ์ญํ ์ด ๋ช ํํ๊ฒ ๋ถ๋ฆฌ๋์ด ์ฝ๋์ ๊ฐ๋ ์ฑ์ด ๋์์ง๊ณ , ์ ์ง๋ณด์๊ฐ ์ฉ์ดํด์ง๋๋ค.
Model: ๋ฐ์ดํฐ์ ๋น์ฆ๋์ค ๋ก์ง์ ๋ด๋นํฉ๋๋ค. ๊ฒ์ํ์ ๊ฒฝ์ฐ, ๊ฒ์๊ธ ๋ชฉ๋ก์ ๋ถ๋ฌ์ค๊ฑฐ๋, ๊ธ์ ์์ฑ, ์์ , ์ญ์ ํ๋ ๋ก์ง์ด ์ฌ๊ธฐ์ ํด๋น๋ฉ๋๋ค.
View: ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ง๋ ํ๋ฉด์ ๋ด๋นํฉ๋๋ค. HTML, CSS, JavaScript ๋ฑ์ผ๋ก ๊ตฌ์ฑ๋ ๊ฒ์ํ์ UI๊ฐ ์ฌ๊ธฐ์ ํด๋น๋ฉ๋๋ค.
Controller: Model๊ณผ View ์ฌ์ด์ ์ฐ๊ฒฐ๊ณ ๋ฆฌ ์ญํ ์ ํฉ๋๋ค. ์ฌ์ฉ์์ ์์ฒญ์ ๋ฐ์ Model์๊ฒ ์์ ์ ์ง์ํ๊ณ , ๊ฒฐ๊ณผ๋ฅผ View์ ์ ๋ฌํฉ๋๋ค.
๊ฐ๋จํ MVC ๊ตฌ์กฐ๋ก ๋ฆฌํฉํ ๋งํ๊ธฐ
์ด์ ์ค์ ๋ก ๊ฒ์ํ ์ฝ๋๋ฅผ MVC ํจํด์ผ๋ก ๋ฆฌํฉํ ๋งํด ๋ณด๊ฒ ์ต๋๋ค. ๋จผ์ ํ๋ก์ ํธ์ ๋๋ ํฐ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌ์ฑํฉ๋๋ค.
/board
/controller
- BoardController.php
/model
- BoardModel.php
/view
- list.php
- write.php
- view.php
- index.php
Model (BoardModel.php)
Model์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ํต์ ์ ๋ด๋นํฉ๋๋ค. BoardModel.php
ํ์ผ์ ๊ฒ์๊ธ์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ํด๋์ค๋ฅผ ์์ฑํฉ๋๋ค.
PHP
<?php
// /model/BoardModel.php
class BoardModel {
private $conn;
public function __construct() {
// ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ
$this->conn = new PDO("mysql:host=localhost;dbname=mydb;charset=utf8", "user", "password");
}
public function getPosts() {
// ๊ฒ์๊ธ ๋ชฉ๋ก์ ๊ฐ์ ธ์ค๋ ๋ก์ง
$stmt = $this->conn->prepare("SELECT * FROM board ORDER BY id DESC");
$stmt->execute();
return $stmt->fetchAll(PDO::FETCH_ASSOC);
}
public function getPostById($id) {
// ํน์ ๊ฒ์๊ธ์ ๊ฐ์ ธ์ค๋ ๋ก์ง
$stmt = $this->conn->prepare("SELECT * FROM board WHERE id = ?");
$stmt->execute([$id]);
return $stmt->fetch(PDO::FETCH_ASSOC);
}
// ... ๊ธ ์์ฑ, ์์ , ์ญ์ ๋ก์ง ์ถ๊ฐ
}
?>
View (list.php)
View๋ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ง๋ ํ๋ฉด์ ๋ด๋นํฉ๋๋ค. list.php
ํ์ผ์ ๊ฒ์๊ธ ๋ชฉ๋ก์ ํ์ํ๋ HTML ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
PHP
<!DOCTYPE html>
<html>
<head>
<title>๊ฒ์ํ ๋ชฉ๋ก</title>
</head>
<body>
<h1>๊ฒ์ํ ๋ชฉ๋ก</h1>
<table>
<thead>
<tr>
<th>๋ฒํธ</th>
<th>์ ๋ชฉ</th>
<th>์์ฑ์</th>
</tr>
</thead>
<tbody>
<?php foreach ($posts as $post): ?>
<tr>
<td><?php echo htmlspecialchars($post['id']); ?></td>
<td><a href="/view.php?id=<?php echo htmlspecialchars($post['id']); ?>"><?php echo htmlspecialchars($post['title']); ?></a></td>
<td><?php echo htmlspecialchars($post['author']); ?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</body>
</html>
Controller (BoardController.php)
Controller๋ ์ฌ์ฉ์์ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ Model๊ณผ View๋ฅผ ์ฐ๊ฒฐํฉ๋๋ค. BoardController.php
ํ์ผ์ ์์ฒญ์ ๋ฐ๋ผ ์ ์ ํ ๋ก์ง์ ์คํํ๋ ํด๋์ค๋ฅผ ์์ฑํฉ๋๋ค.
PHP
<?php
// /controller/BoardController.php
require_once('../model/BoardModel.php');
class BoardController {
private $model;
public function __construct() {
$this->model = new BoardModel();
}
public function listAction() {
$posts = $this->model->getPosts();
require_once('../view/list.php');
}
public function viewAction($id) {
$post = $this->model->getPostById($id);
require_once('../view/view.php');
}
// ... ๊ธ ์์ฑ, ์์ , ์ญ์ ์ก์
์ถ๊ฐ
}
?>
๋ผ์ฐํ (index.php)
index.php
ํ์ผ์ ๋ชจ๋ ์์ฒญ์ ๋ฐ์ ์ ์ ํ Controller์ Action์ผ๋ก ์ฐ๊ฒฐํ๋ ๋ผ์ฐํฐ ์ญํ ์ ํฉ๋๋ค.
PHP
<?php
// index.php
require_once('controller/BoardController.php');
$action = $_GET['action'] ?? 'list';
$controller = new BoardController();
if ($action === 'list') {
$controller->listAction();
} elseif ($action === 'view') {
$controller->viewAction($_GET['id']);
}
?>
๋ง๋ฌด๋ฆฌ
์ด๋ฒ ์๊ฐ์๋ ๊ธฐ์กด์ ๊ฒ์ํ ์ฝ๋๋ฅผ #MVC ํจํด์ผ๋ก ๋ฆฌํฉํ ๋งํ๋ ๊ณผ์ ์ ์ดํด๋ณด์์ต๋๋ค. ์ด๋ ๊ฒ ๊ตฌ์กฐ๋ฅผ ๋ถ๋ฆฌํ๋ฉด ์ฝ๋๊ฐ ํจ์ฌ ๊น๋ํด์ง๊ณ , ํฅํ ๊ธฐ๋ฅ ์ถ๊ฐ๋ ์์ ์ด ํจ์ฌ ์ฉ์ดํด์ง๋๋ค. ๋ค์ ์๊ฐ์๋ ๋ ๋ณต์กํ ๊ธฐ๋ฅ์ MVC ํจํด์ผ๋ก ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ๋ค๋ค๋ณด๊ฒ ์ต๋๋ค.
๊นจ๋ํ IP๋ง ๋ชจ์๋์ ๊ณณ, VPN PC, ๋ชจ๋ฐ์ผ ์ง์์ผ๋ก ์ด๋ค ๊ธฐ๊ธฐ์์๋ OK!