216.73.216.116 TODAY : 2,756

PHP ์˜จ๋ผ์ธ ๊ฐ•์˜

 > 

PHP - ์ค‘๊ธ‰

๐Ÿ“š PHP ์ค‘๊ธ‰ - 7์ฃผ์ฐจ: MVC ํŒจํ„ด์˜ ์ดํ•ด ๋ฐ ์ ์šฉ- 02 ๊ฐ„๋‹จํ•œ MVC ๊ตฌ์กฐ๋กœ ๊ฒŒ์‹œํŒ ๋ฆฌํŒฉํ† ๋ง

๐Ÿ“š 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 ํŒจํ„ด์œผ๋กœ ๋ฆฌํŒฉํ† ๋งํ•˜์—ฌ ๋” ํšจ์œจ์ ์ด๊ณ  ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์šฉ์ดํ•œ ๊ตฌ์กฐ๋กœ ๊ฐœ์„ ํ•ด ๋ด…์‹œ๋‹ค.



๊ธฐ์กด ๊ฒŒ์‹œํŒ ์ฝ”๋“œ์˜ ๋ฌธ์ œ์ 

uploadImage

๊ธฐ์กด์— ์ž‘์„ฑํ–ˆ๋˜ ๊ฒŒ์‹œํŒ ์ฝ”๋“œ๋Š” ํ•˜๋‚˜์˜ #PHP ํŒŒ์ผ ์•ˆ์— HTML, CSS, JavaScript, ๊ทธ๋ฆฌ๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋กœ์ง๊นŒ์ง€ ๋ชจ๋“  ์ฝ”๋“œ๊ฐ€ ํ˜ผ์žฌ๋˜์–ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ์ œ์ ์„ ์•ผ๊ธฐํ•ฉ๋‹ˆ๋‹ค.

  • ์œ ์ง€๋ณด์ˆ˜์˜ ์–ด๋ ค์›€: ํŠน์ • ๊ธฐ๋Šฅ์„ ์ˆ˜์ •ํ•˜๋ ค๋ฉด ๊ด€๋ จ๋œ ๋ชจ๋“  ์ฝ”๋“œ๋ฅผ ์ฐพ์•„์•ผ ํ•˜๋ฏ€๋กœ, ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๊ณ  ์‹ค์ˆ˜๋ฅผ ์œ ๋ฐœํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค.

  • ์žฌ์‚ฌ์šฉ์„ฑ์˜ ํ•œ๊ณ„: ๋‹ค๋ฅธ ํŽ˜์ด์ง€์—์„œ ๊ฒŒ์‹œํŒ ๋กœ์ง์„ ์žฌ์‚ฌ์šฉํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

  • ๊ฐ€๋…์„ฑ ์ €ํ•˜: ์ฝ”๋“œ๊ฐ€ ๋ณต์žกํ•˜๊ฒŒ ์–ฝํ˜€ ์žˆ์–ด ์ฝ๊ณ  ์ดํ•ดํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.



MVC ํŒจํ„ด ์ ์šฉ์˜ ์žฅ์ 

uploadImage

#MVC ํŒจํ„ด์„ ์ ์šฉํ•˜๋ฉด ์œ„์™€ ๊ฐ™์€ ๋ฌธ์ œ์ ๋“ค์„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ์—ญํ• ์ด ๋ช…ํ™•ํ•˜๊ฒŒ ๋ถ„๋ฆฌ๋˜์–ด ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์ด ๋†’์•„์ง€๊ณ , ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์šฉ์ดํ•ด์ง‘๋‹ˆ๋‹ค.

  • Model: ๋ฐ์ดํ„ฐ์™€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ๊ฒŒ์‹œํŒ์˜ ๊ฒฝ์šฐ, ๊ฒŒ์‹œ๊ธ€ ๋ชฉ๋ก์„ ๋ถˆ๋Ÿฌ์˜ค๊ฑฐ๋‚˜, ๊ธ€์„ ์ž‘์„ฑ, ์ˆ˜์ •, ์‚ญ์ œํ•˜๋Š” ๋กœ์ง์ด ์—ฌ๊ธฐ์— ํ•ด๋‹น๋ฉ๋‹ˆ๋‹ค.

  • View: ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ง€๋Š” ํ™”๋ฉด์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค. HTML, CSS, JavaScript ๋“ฑ์œผ๋กœ ๊ตฌ์„ฑ๋œ ๊ฒŒ์‹œํŒ์˜ UI๊ฐ€ ์—ฌ๊ธฐ์— ํ•ด๋‹น๋ฉ๋‹ˆ๋‹ค.

  • Controller: Model๊ณผ View ์‚ฌ์ด์˜ ์—ฐ๊ฒฐ๊ณ ๋ฆฌ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์„ ๋ฐ›์•„ Model์—๊ฒŒ ์ž‘์—…์„ ์ง€์‹œํ•˜๊ณ , ๊ฒฐ๊ณผ๋ฅผ View์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.



๊ฐ„๋‹จํ•œ MVC ๊ตฌ์กฐ๋กœ ๋ฆฌํŒฉํ† ๋งํ•˜๊ธฐ

uploadImage

์ด์ œ ์‹ค์ œ๋กœ ๊ฒŒ์‹œํŒ ์ฝ”๋“œ๋ฅผ 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']);
}
?>



๋งˆ๋ฌด๋ฆฌ

uploadImage

์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” ๊ธฐ์กด์˜ ๊ฒŒ์‹œํŒ ์ฝ”๋“œ๋ฅผ #MVC ํŒจํ„ด์œผ๋กœ ๋ฆฌํŒฉํ† ๋งํ•˜๋Š” ๊ณผ์ •์„ ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๊ตฌ์กฐ๋ฅผ ๋ถ„๋ฆฌํ•˜๋ฉด ์ฝ”๋“œ๊ฐ€ ํ›จ์”ฌ ๊น”๋”ํ•ด์ง€๊ณ , ํ–ฅํ›„ ๊ธฐ๋Šฅ ์ถ”๊ฐ€๋‚˜ ์ˆ˜์ •์ด ํ›จ์”ฌ ์šฉ์ดํ•ด์ง‘๋‹ˆ๋‹ค. ๋‹ค์Œ ์‹œ๊ฐ„์—๋Š” ๋” ๋ณต์žกํ•œ ๊ธฐ๋Šฅ์„ MVC ํŒจํ„ด์œผ๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋‹ค๋ค„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.




๊นจ๋—ํ•œ IP๋งŒ ๋ชจ์•„๋†“์€ ๊ณณ, VPN PC,  ๋ชจ๋ฐ”์ผ ์ง€์›์œผ๋กœ ์–ด๋–ค ๊ธฐ๊ธฐ์—์„œ๋„ OK!

https://xn--299ao67b9qbmsf04c.net/