애플리케이션 구조

CodeIgniter를 최대한 활용하려면 기본적으로 애플리케이션이 어떻게 구성되어 있는지, 그리고 애플리케이션의 요구를 충족하기 위해 무엇을 변경할 수 있는지 이해해야 합니다.

기본 디렉토리

새로 설치한 CodeIgniter는 5개의 디렉토리를 포함합니다:

  • app

  • public

  • writable

  • tests

  • vendor 또는 system

이러한 각 디렉토리는 매우 구체적인 역할을 담당합니다.

app

app 디렉토리는 애플리케이션의 모든 코드가 위치하는 곳입니다. 기본적으로 많은 애플리케이션에 적합한 디렉토리 구조를 제공합니다.

다음 폴더들이 기본 콘텐츠를 구성합니다:

app/
    Config/         Stores the configuration files
    Controllers/    Controllers determine the program flow
    Database/       Stores the database migrations and seeds files
    Filters/        Stores filter classes that can run before and after controller
    Helpers/        Helpers store collections of standalone functions
    Language/       Multiple language support reads the language strings from here
    Libraries/      Useful classes that don't fit in another category
    Models/         Models work with the database to represent the business entities
    ThirdParty/     ThirdParty libraries that can be used in application
    Views/          Views make up the HTML that is displayed to the client

app 디렉토리는 이미 네임스페이스로 구성되어 있으므로, 애플리케이션의 요구에 맞게 이 디렉토리의 구조를 자유롭게 수정할 수 있습니다.

예를 들어, 데이터 작업을 위해 Repository 패턴과 Entities를 사용하기로 결정할 수 있습니다. 이 경우 Models 디렉토리의 이름을 Repositories 로 변경하고 새로운 Entities 디렉토리를 추가할 수 있습니다.

이 디렉토리의 모든 파일은 App 네임스페이스 아래에 위치하지만, app/Config/Constants.php 에서 이를 자유롭게 변경할 수 있습니다.

system

참고

Composer를 사용하여 CodeIgniter를 설치하면 systemvendor/codeigniter4/framework/system 에 위치합니다.

이 디렉토리는 프레임워크를 구성하는 파일들을 저장합니다. 애플리케이션 디렉토리를 사용하는 방식에 많은 유연성이 있지만, system 디렉토리의 파일은 절대 수정해서는 안 됩니다. 대신, 원하는 기능을 제공하기 위해 클래스를 확장하거나 새로운 클래스를 만들어야 합니다.

이 디렉토리의 모든 파일은 CodeIgniter 네임스페이스 아래에 위치합니다.

public

public 폴더는 웹 애플리케이션의 브라우저 접근 가능 부분을 보유하며, 소스 코드에 직접 접근하는 것을 방지합니다.

주요 .htaccess 파일, index.php, 그리고 CSS, JavaScript, 이미지 등 추가한 애플리케이션 자산을 포함합니다.

이 폴더는 사이트의 “웹 루트”로 사용되며, 웹 서버는 이 폴더를 가리키도록 설정됩니다.

writable

이 디렉토리는 애플리케이션이 실행되는 동안 쓰기가 필요할 수 있는 디렉토리들을 보유합니다. 캐시 파일, 로그, 사용자가 업로드한 파일 등을 저장하는 디렉토리가 포함됩니다.

애플리케이션이 쓰기가 필요한 다른 디렉토리를 여기에 추가해야 합니다. 이를 통해 보안을 강화하기 위해 다른 주요 디렉토리를 쓰기 금지 상태로 유지할 수 있습니다.

tests

이 디렉토리는 테스트 파일들을 보유하도록 설정되어 있습니다. _support 디렉토리는 테스트를 작성할 때 사용할 수 있는 다양한 모의 클래스 및 기타 유틸리티를 포함합니다.

이 디렉토리는 프로덕션 서버로 전송할 필요가 없습니다.

디렉토리 위치 수정하기

주요 디렉토리를 재배치한 경우 app/Config/Paths.php 내의 설정을 변경할 수 있습니다.

Managing your Applications 를 참조하세요.