์จ๋ผ์ธ ๊ฐ์
>PHP - ์ค๊ธ
๐ PHP ์ค๊ธ - 7์ฃผ์ฐจ: MVC ํจํด์ ์ดํด ๋ฐ ์ ์ฉ- 02 ๊ฐ๋จํ MVC ๊ตฌ์กฐ๋ก ๊ฒ์ํ ๋ฆฌํฉํ ๋ง
์ฃผ์ ํ๋ก๊ทธ๋จ ์คํ
- ํ์ : 10.0
- ๋ผ์ด์ ์ค: free
- ์ด์์ฒด์ :
- ํ์ผ ํฌ๊ธฐ: 0
ํผ๋๋ฐฑ ๋ฐ ๋ค์ด๋ก๋
- ์ฌ์ฉ์ ํ์ : 10.0
- ๋ค์ด๋ก๋ ์: 1
- ์กฐํ์: 80
์ ์กฐ์ฌ ๋ฐ ๋ฑ๋ก ์ ๋ณด
- ์ ์์ฌ: LUZENSOFT
- ๋ฑ๋ก์ผ: 2025-08-10 11:06:20
- ์ค๋ช
์ด๋ฒ ์๊ฐ์๋ ์ง๋ ์ฃผ์ ๋ฐฐ์ ๋ 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
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
๊ฒ์ํ ๋ชฉ๋ก
๋ฒํธ
์ ๋ชฉ
์์ฑ์
Controller (BoardController.php)
Controller๋ ์ฌ์ฉ์์ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ Model๊ณผ View๋ฅผ ์ฐ๊ฒฐํฉ๋๋ค. BoardController.php ํ์ผ์ ์์ฒญ์ ๋ฐ๋ผ ์ ์ ํ ๋ก์ง์ ์คํํ๋ ํด๋์ค๋ฅผ ์์ฑํฉ๋๋ค.
PHP
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
listAction();
} elseif ($action === 'view') {
$controller->viewAction($_GET['id']);
}
?>
๋ง๋ฌด๋ฆฌ
์ด๋ฒ ์๊ฐ์๋ ๊ธฐ์กด์ ๊ฒ์ํ ์ฝ๋๋ฅผ #MVC ํจํด์ผ๋ก ๋ฆฌํฉํ ๋งํ๋ ๊ณผ์ ์ ์ดํด๋ณด์์ต๋๋ค. ์ด๋ ๊ฒ ๊ตฌ์กฐ๋ฅผ ๋ถ๋ฆฌํ๋ฉด ์ฝ๋๊ฐ ํจ์ฌ ๊น๋ํด์ง๊ณ , ํฅํ ๊ธฐ๋ฅ ์ถ๊ฐ๋ ์์ ์ด ํจ์ฌ ์ฉ์ดํด์ง๋๋ค. ๋ค์ ์๊ฐ์๋ ๋ ๋ณต์กํ ๊ธฐ๋ฅ์ MVC ํจํด์ผ๋ก ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ๋ค๋ค๋ณด๊ฒ ์ต๋๋ค.
๊นจ๋ํ IP๋ง ๋ชจ์๋์ ๊ณณ, VPN PC, ๋ชจ๋ฐ์ผ ์ง์์ผ๋ก ์ด๋ค ๊ธฐ๊ธฐ์์๋ OK!