1. 클래스 초기화
CodeIgniter의 모든 라이브러리는 system/libraries 디렉토리에 위치합니다.
이 클래스들을 사용하기 위해서는 controller에서 초기화를 해야 합니다.
$this->load->library('form_validation');
2. 클래스 파일
사용자는 application/libraries 에 새로운 라이브러리를 만들수도 있고, 기존 라이브러리를 확장하거나 대체할 수도 있습니다.
(Database 클래스만은 확장, 대체가 불가능 합니다.)
클래스 파일의 이름은 대문자로 시작해야 하며, 클래스 정의 이름과 같아야 합니다.
Class 의 기본 프로토타입.
$ vi application/libraries/Someclass.php
class Someclass {
public function some_function()
{
}
}
/* End of file Someclass.php */
3. 클래스 초기화시에 파라미터 전달
library 로딩 함수에 두번째 파라미터로 배열을 전달할 수 있으며, 이 데이터는 클래스 생성자로 전달됩니다.
$params = array('type' => 'large', 'color' => 'red');
$this->load->library('Someclass', $params);
// library
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Someclass {
public function __construct($params)
{
// Do something with $params
}
}
?>
4. 라이브러리 확장
내장 라이브러리에 기능 추가 등을 위해 확장할 수 있습니다.
내장 라이브러리는 CI_로 시작하고 사용자 라이브러리는 MY_로 시작해야 합니다.
(application/config/config.php 파일에서 변경 가능)
확장한 클래스에서 생성자를 사용하려면 부모 생성자를 확장하여 사용해야 합니다.
public function __construct()
{
parent::__construct();
}
}
5. 라이브러리에서 CodeIgniter 리소스 사용
일반적으로 controller 에서 $this를 사용하여 CodeIgniter의 모든 함수를 호출할 것입니다.
$this->load->library('session');
$this->config->item('base_url');
만약 사용자 라이브러리에서 CodeIgniter의 클래스를 사용하기 원한다면
get_instance() 함수를 사용하여 사용자 라이브러리에서 CodeIgniter 리소스를 사용할 수 있습니다.
이 함수는 CodeIgniter의 부모 객체를 반환합니다.
변수에 CodeIgniter 객체를 할당하여 $this 대신에 사용할 것입니다.
$CI->load->helper('url');
$CI->load->library('session');
$CI->config->item('base_url');
참조로 객체를 생성한 것은 원본의 CodeIgniter 객체을 사용한다는 것입니다.
(PHP4에서는 get_instance() 함수를 호출할 수 없습니다.)
WRITTEN BY
- 손가락귀신
정신 못차리면, 벌 받는다.