8.2 코드 파일 구조화

약 8분

본문 듣기
읽기 설정

글자 크기

줄 간격

글꼴

8.2 코드 파일 구조화

웹 애플리케이션을 개발하면서 가장 중요한 요소 중 하나는 코드의 구조입니다. 효율적인 코드 구조는 유지보수를 쉽게 하고, 팀원 간의 협업을 원활하게 합니다. 특히 PHP로 백엔드를 개발할 때, 프로젝트 파일 구조는 애플리케이션의 확장성과 가독성에 큰 영향을 미칩니다. 이 장에서는 코드 파일 구조화에 대한 원칙과 베스트 프랙티스를 살펴보겠습니다.

1. 프로젝트 폴더 구조

전형적인 PHP 프로젝트는 다음과 같은 기본 구조로 구성됩니다:

/my_project  
├── /app                    # 애플리케이션 코드  
│   ├── /controllers        # 컨트롤러  
│   ├── /models             # 모델  
│   ├── /views              # 뷰  
│   └── /config             # 설정 파일  
├── /public                 # 공개 접근 가능 폴더 (웹서버 루트)  
│   ├── index.php           # 진입점  
│   └── /assets             # CSS, JS, 이미지  
├── /database               # 데이터베이스 관련 파일  
├── /vendor                 # Composer 의존성  
└── composer.json           # 의존성 관리 파일  

이러한 구조는 MVC(Model-View-Controller) 패턴을 기반으로 하며, 각 요소가 서로의 책임을 명확히 합니다. 컨트롤러는 HTTP 요청을 처리하고, 모델은 데이터베이스와의 상호작용을 담당하며, 뷰는 사용자에게 보여질 내용을 결정합니다.

2. MVC 패턴의 이해

MVC 패턴은 웹 애플리케이션의 비즈니스 로직과 사용자 인터페이스를 분리해줍니다. 이는 유지보수성을 높이고, 각 요소를 독립적으로 테스트할 수 있게 합니다. 예를 들어, 게시판 기능을 구현할 때 각 게시물은 모델에서 데이터베이스로부터 가져온 후, 컨트롤러가 이를 처리하고, 뷰가 사용자에게 보여주는 형태입니다.

3. 코드 파일 예제

여기서는 간단한 게시물 기능의 파일 구조 및 예제를 보여드리겠습니다.

게시물 모델 (Post.php)

<?php
namespace App\Models;  
use PDO;  

class Post {
    private $db;

    public function __construct(PDO $db) {
        $this->db = $db;
    }

    public function getAllPosts() {
        $stmt = $this->db->query('SELECT * FROM posts');
        return $stmt->fetchAll(PDO::FETCH_ASSOC);
    }
}

게시물 컨트롤러 (PostController.php)

<?php
namespace App\Controllers;  
use App\Models\Post;

class PostController {
    private $model;

    public function __construct(Post $model) {
        $this->model = $model;
    }

    public function index() {
        $posts = $this->model->getAllPosts();
        include_once '../views/posts/index.php';
    }
}

게시물 뷰 (index.php)

<h1>Posts</h1>
<ul>
<?php foreach ($posts as $post): ?>
    <li><?php echo $post['title']; ?></li>
<?php endforeach; ?>
</ul>

이 예제는 간단한 구조를 보여주며, 각 파일이 어떤 역할을 하는지에 대한 명확한 이해를 돕습니다.

4. 실습 과제

  • 위의 파일 구조를 따라 자신만의 웹 애플리케이션을 구축해 보십시오.
  • CRUD(Create, Read, Update, Delete) 기능을 포함한 게시물 관리 시스템을 만들어 보십시오.
  • MVC 패턴을 적용하여 게시물 목록을 보여주는 기능을 구현해 보십시오.

5. 정리

코드 파일 구조화는 PHP 웹 애플리케이션의 필수적인 부분입니다. 유지보수성과 확장성을 고려한 좋은 구조를 통해, 더 효율적인 개발이 가능합니다. 이 장에서 설명한 내용을 바탕으로 여러분의 프로젝트를 잘 구조화해 보세요.

코드 php
<?php
namespace App\Models;  
use PDO;  

class Post {
    private $db;

    public function __construct(PDO $db) {
        $this->db = $db;
    }

    public function getAllPosts() {
        $stmt = $this->db->query('SELECT * FROM posts');
        return $stmt->fetchAll(PDO::FETCH_ASSOC);
    }
}
코드 php
<?php
namespace App\Controllers;  
use App\Models\Post;

class PostController {
    private $model;

    public function __construct(Post $model) {
        $this->model = $model;
    }

    public function index() {
        $posts = $this->model->getAllPosts();
        include_once '../views/posts/index.php';
    }
}
코드 html
<h1>Posts</h1>
<ul>
<?php foreach ($posts as $post): ?>
    <li><?php echo $post['title']; ?></li>
<?php endforeach; ?>
</ul>

댓글 0

댓글을 남기려면 로그인하세요.

아직 댓글이 없습니다. 첫 댓글을 남겨보세요.