코어 클래서 생성하기 Creating Core System Classes

CodeIgniter를 사용할 때마다 자동으로 초기화되어 코어프레임워크의 일부로 작동하는 몇몇 기반클래스(base classes)가 있습니다. 그것도 좋습니다만, 코어클래스를 여러분의 클래스로 대체하거나 확장 하는 것도 가능합니다.

대부분 사용자들은 이런것까지 필요없겠지만, 깊이있게 CodeIgniter 의 코어 부분을 튜닝하고 싶어하는 분들을 위해 이러한 옵션을 제공합니다

Note

코어클래스에대해 작업하는 것은 여러가지 위험을 내포하고있으므로, 매우 신중하셔야 합니다.

시스템 클래스 목록 System Class List

다음의 시스템클래스 목록은 CodeIgniter가 작동할 때마다 호출되는 클래스 들입니다:

  • Benchmark
  • Config
  • Controller
  • Exceptions
  • Hooks
  • Input
  • Language
  • Loader
  • Log
  • Output
  • Router
  • 보안(Security)
  • URI
  • Utf8

코어클래스 대체 Replacing Core Classes

내장된 코어클래스 대신에 당신이 만든 시스템 클래스를 사용하려면 클래스 파일을 application/core/ 폴더에 저장하세요:

application/core/some_class.php

이 폴더가 없다면 만드시면 됩니다.

당신의 클래스 이름이 상단의 클래스 목록중 어느 하나와 일치한다면 당신의 클래스가 그것 대신 사용될 것입니다.

당신의 클래스선언은 는 반드시 CI 접두어로 시작해야 합니다. 예를 들어, 당신이 만든 파일 이름이 Input.php 이라면 클래스는 다음과 같이 선언해야 합니다:

class CI_Input {

}

코어클래스 확장 Extending Core Class

내장 코어 클래스에 몇몇 함수 추가 정도를 원하신다면 내장클래스를 확장하는 것이 현명합니다.클래스 확장 작업은 대체작업과 거의 유사합니다:

  • 클래스는 반드시 내장클래스를 확장(extend)하여 만드셔야 합니다.
  • 당신이 만드는 클래스는 반드시 접두어MY_ 로 시작해야 합니다.(이 접두어는 설정에서 바꿀 수 있습니다).

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

class MY_Input extends CI_Input {

}

Note

만약 생성자를 사용해야한다면 클래스 생성자에서 부모클래스의 생성자를 호출해주어야한다는점을 잊지마세요:

class MY_Input extends CI_Input {

        public function __construct()
        {
                parent::__construct();
        }
}

Tip:당신이 만든클래스내의 함주중에서 부모클래스(여기서는 내장클래스)의 이름과 같은 함수는 부모클래스의 함수 대신 사용됩니다.(메소드 오버라이딩과 같습니다). 이러한 특징으로 부분적인 내장 클래스 함수의 변경이 가능한 것입니다.

만약 컨트롤러 코어클래스(Controller core class)를 확장한다면, 컨트롤러 기반클래스를사용하는 당신의 프로그램에서 그부분을 확장된 기반클래스 이름으로 바꾸셔야 합니다.

class Welcome extends MY_Controller {

        public function __construct()
        {
                parent::__construct();
        }

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

나만의 클래스 접두어 설정 Setting Your Own Prefix

접두어를 원하는대로 바꾸려면 application/config/config.php 파일을 여신후 아래의 변수를 찾습니다:

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

모든 CodeIgniter 내장클래스는 접두어로 CI_ 을 사용하고 있으므로 여러분의 접두어에는 사용하시면 안됩니다.