코어 시스템 클래스 만들기

CodeIgniter가 실행될 때마다 코어 프레임워크의 일부로 자동으로 초기화되는 몇 가지 기본 클래스가 있습니다. 하지만 코어 시스템 클래스를 자신만의 버전으로 교체하거나 코어 버전을 확장하는 것도 가능합니다.

대부분의 사용자는 이것이 필요하지 않겠지만, CodeIgniter 코어를 크게 변경하고 싶은 분들을 위해 교체 또는 확장 옵션이 존재합니다.

참고

코어 시스템 클래스를 건드리는 것은 많은 영향을 미치므로 시도하기 전에 무엇을 하고 있는지 잘 알고 있는지 확인하세요.

시스템 클래스 목록

다음은 CodeIgniter가 실행될 때마다 호출되는 코어 시스템 파일 목록입니다:

  • Benchmark

  • Config

  • Controller

  • Exceptions

  • Hooks

  • Input

  • Language

  • Loader

  • Log

  • Output

  • Router

  • Security

  • URI

  • Utf8

코어 클래스 교체

기본 시스템 클래스 대신 자신만의 시스템 클래스를 사용하려면 자신의 버전을 로컬 application/core/ 디렉터리에 배치하세요:

application/core/some_class.php

이 디렉터리가 없으면 만들 수 있습니다.

위 목록 중 하나와 동일한 이름을 가진 파일은 일반적으로 사용되는 파일 대신 사용됩니다.

클래스에 CI를 접두사로 사용해야 합니다. 예를 들어 파일 이름이 Input.php인 경우 클래스는 다음과 같이 이름이 지정됩니다:

class CI_Input {

}

코어 클래스 확장

기존 라이브러리에 일부 기능만 추가하면 되는 경우, 즉 메소드를 하나 또는 두 개 추가하는 경우라면 전체 라이브러리를 자신만의 버전으로 교체하는 것은 과도합니다. 이 경우 단순히 클래스를 확장하는 것이 좋습니다. 클래스 확장은 몇 가지 예외를 제외하면 클래스 교체와 거의 동일합니다:

  • 클래스 선언은 부모 클래스를 확장해야 합니다.

  • 새 클래스 이름과 파일 이름에는 MY_ 접두사를 붙여야 합니다 (이 항목은 구성 가능합니다. 아래 참조).

예를 들어 기본 Input 클래스를 확장하려면 application/core/MY_Input.php 파일을 만들고 다음과 같이 클래스를 선언합니다:

class MY_Input extends CI_Input {

}

참고

클래스에서 생성자를 사용해야 하는 경우 부모 생성자를 반드시 확장하세요:

class MY_Input extends CI_Input {

        public function __construct()
        {
                parent::__construct();
                // 자신만의 생성자 코드
        }
}

팁: 부모 클래스의 메소드와 동일한 이름을 가진 함수는 기본 함수 대신 사용됩니다 (이것을 “메소드 오버라이딩”이라고 합니다). 이를 통해 CodeIgniter 코어를 상당히 변경할 수 있습니다.

Controller 코어 클래스를 확장하는 경우 애플리케이션 컨트롤러의 생성자에서 새 클래스를 확장해야 합니다.

class Welcome extends MY_Controller {

        public function index()
        {
                $this->load->view('welcome_message');
        }
}

자신만의 접두사 설정

자신만의 서브클래스 접두사를 설정하려면 application/config/config.php 파일을 열고 다음 항목을 찾으세요:

$config['subclass_prefix'] = 'MY_';

모든 기본 CodeIgniter 라이브러리에는 CI_ 접두사가 붙으므로 그것을 접두사로 사용하지 마세요.