어플리케이션 구조

CodeIgniter를 최대한 활용하려면 기본적으로 어플리케이션의 구성 방식과 요구에 맞게 변경할 수 있는 사항을 이해해야 합니다.

기본 디렉터리

설치후 생성되는 6개의 디렉터리: /app, /system, /public, /writable, /tests, /docs. 이 각각의 디렉터리는 매우 특정한 부분을 가지고 있습니다.

app

app 디렉터리는 당신 작성한 모든 어플리케이션 코드가 있는 곳입니다. 이것은 많은 어플리케이션에서 잘 작동하는 기본 디렉터리 구조와 함께 제공됩니다. 다음 폴더는 기본 내용을 구성합니다:

/app
        /Config         구성 파일 저장
        /Controllers    프로그램 흐름을 결정하는 컨트롤러
        /Database       데이터베이스 마이그레이션 및 시드(seed) 파일 저장
        /Filters        컨트롤러 전후에 실행할 수 있는 필터 클래스 저장
        /Helpers        독립형 함수 모음(Helper) 저장
        /Language       다국어 지원을 위한 언어 파일 저장
        /Libraries      카테고리에 포함되지 않는 유용한 클래스 모음
        /Models         데이터베이스와 함께 작동하는 모델 저장
        /ThirdParty     어플리케이션에서 사용할 수 있는 타사 라이브러리
        /Views          클라이언트에 표시되는 HTML로 구성된 뷰

app 디렉터리는 이미 네임스페이스이므로 애플리케이션의 요구에 맞게 이 디렉터리의 구조를 자유롭게 수정할 수 있습니다. 예를 들면, 여러분은 레파지토리 패턴과 엔티티 모델을 사용하여 데이터 작업을 시작하기로 결정할 수 있습니다. 이 경우 Models 디렉터리의 이름을 Repositories로 변경하고 새로운 Entities 디렉터리를 추가할 수 있다.

Note

만약 여러분이 Controllers 디렉터리의 이름을 바꾸면 컨트롤러 자동 라우팅이 동작 하지 않으므로 모든 라우팅 설정을 app/Config/Routes.php 파일에 정의해야 합니다.

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

system

이 디렉토리는 프레임워크 자체를 구성하는 파일을 저장합니다. 어플리케이션 디렉토리를 사용하는 방법에는 많은 유연성이 있지만 시스템 디렉토리의 파일은 절대 수정해서는 안됩니다. 원하는 기능을 제공하고 싶다면 클래스를 확장하거나 새 클래스를 작성하면 됩니다.

이 디렉토리의 모든 파일은 CodeIgniter 네임스페이스에 있습니다.

public

public 폴더에 브라우저로 액세스할 수 있는 웹 어플리케이션의 일부를 보관합니다. 여기에는 .htaccess 파일, index.php 및 CSS, javascript 또는 이미지와 같이 추가한 모든 어플리케이션 자산이 포함됩니다.

이 폴더는 당신의 사이트의 “웹 루트(web root)”를 의미하며, 웹 서버가 그것을 가리키도록 구성합니다.

writable

이 디렉토리는 어플리케이션의 동작하는 동안 작성되어야 할 모든것을 보관합니다. 여기에는 캐시 파일, 로그 및 사용자가 업로드한 데이터를 저장하기 위한 디렉터리가 포함됩니다. 어플리케이션이 여기에 작성해야 하는 다른 디렉터리도 추가할 수 있습니다. 이를 통해 추가 보안 조치로 다른 기본 디렉터리를 쓸 수 없는 상태로 유지할 수 있습니다.

tests

이 디렉토리는 테스트 파일을 보관하도록 설정되어 있습니다. _support 디렉토리에는 테스트를 작성하는 동안 사용할 수 있는 다양한 모의 클래스 및 기타 유틸리티가 있습니다. 이 디렉토리는 프로덕션 서버로 전송할 필요가 없습니다.

docs

이 디렉토리가 프로젝트의 일부인 경우, CodeIgniter4 사용자 안내서(guide)의 로컬 사본을 보관합니다.

디렉토리 위치 수정

기본 디렉터리를 재배치하고 싶다면 app/Config/Paths 내에서 구성 설정을 변경하면 됩니다.

더 많은 정보는 애플리케이션 관리를 읽으십시오.