CodeIgniter 한국사용자포럼 BETA
빠르고, 유연한 PHP Framework!

CI 코드


CodeIgniter 에서 PEAR 라이브러리 사용하기      
서치 2 2,681 0 0 2010-05-27 01:33:22
2007년 개인 블로그에 작성한 글입니다.. 퍼갈시 출처 표기 바랍니다.
-------------------------
CodeIgniter 는 단 시간내에 빠른 개발 방법을 지원하는 경량급 PHP 프레임워크인데, 모든 것을 이 안에서 다 제공하다 보니 하나의 문제가 생겼다. 바로 외부에 존재하는 수 많은 라이브러리의 사용이 그것이다.

이 글은 PHP 에서 지원하는 PEAR 라이브러리를 CodeIgniter 에서 사용하는 방법을 다룬다.

CodeIgniter 에서 Pear 를 사용하기 위해선 6 가지의 절차를 거쳐야 한다.

우선 config/config.php 파일을 열어서 아래처럼 바꿔준다.

$config['enable_hooks'] = FALSE; ☞ $config['enable_hooks'] = TRUE

그리고 같은 디렉토리 아래 hooks.php 파일을 열어 파일의 맨 끝(PHP 선언이 끝나기 전에 있는 라인)에 다음 내용을 추가해준다.


$hook['pre_controller'][] = array (
 'class' => 'Pear_hook',
 'function' => 'index',
 'filename' => 'pear_hook.php',
 'filepath' => 'hooks'
);


이 제 hook 을 작성할 차례이다. application 아래에 hooks 디렉토리로 이동해 다음 이름으로 파일을 작성한다.

파 일 이름 : pear_hook.php

<?php if ( !defined ( 'BASEPATH' )) exit ( 'No direct script access allowed' );
class Pear_hook
{
 function index ()
 {
  // on Apache
  // ini_set ( 'include_path', ini_get ( 'include_path' ) . ':' . BASEPATH . 'application/web/pear/' );
  ini_set ( 'include_path', ini_get ( 'include_path' ) . ':' . BASEPATH . 'application/web/pear/' );
 }
}
?>


여 기까지 따라왔으니 이제 3단계만 더 거치면 PEAR 를 원활하게 사용할 수 있다. application/libraries 디렉토리로 이동해 아래 파일을 작성한다.

파일 이름 : Pearloader.php

<?php if ( !defined ( 'BASEPATH' )) exit ( 'No direct script access allowed' );
class PearLoader
{
 function load ( $package, $class, $options = null )
 {
  require_once ( $package . '/' . $class . '.php' );
  if ( strpos ( $package, '/' ) ) $package = str_replace ( '/', '_', $package );
  $classname = $package . "_" . $class;
  if ( is_null ( $options ) )
  {
   return new $classname ();
  }
  else
  {
   return new $classname ( $options );
  }
 }
}
?>


여 기까지가 CodeIgniter 에서 Pear 라이브러리를 사용하기 위해 준비를 한 것이다. 이제 최종 단계가 2단계 남아있는데, 따라하자.

하나는 실제 사용할 PEAR 라이브러리와 PEAR.php 파일의 복사가 필요하다.

PEAR.php 파일은 PEAR 가 설치된 경로에 가면 있으니 application 디렉토리 아래 pear 라는 디렉토리를 만들어 복사하고, 실제 사용할 PEAR 라이브러리는 pear.php 에서 받아서 pear 디렉토리 아래에 넣어두면 된다.

이때 사용할 PEAR 라이브러리의 디렉토리명과 클래스명을 잘 파악해둬야 한다(물론 사용하기 위해 불러들이는 파일 하나만에 대해서다).

내 경우 Spreadsheet_Excel_Writer 라는 클래스를 사용해야 하는데, pearloader.php 에서 클래스를 동적으로 할당할 경우 다음과 같이 넘기면

$this->pearloader->load ( 'Spreadsheet/Excel', 'Writer' );

파일은 제대로 포함하지만 클래스는 할당되지 못한다. 이런 경우를 위해 pearloader 클래스에서 동적 클래스 할당전에 약간의 트릭을 사용해서 동적할당이 가능하게 하였다.

사 용할 PEAR 라이브러리를 모두 위치했다면 이제 사용할 차례이다.

PEAR 라이브러리를 사용할 Controller 나 Model 등에서 다음과 같이 사용한다.

$this->load->library ( 'pearloader' );
$http_request = $this->pearloader->load('HTTP','Request');
$http_request->setURL($url);
$http_request->sendRequest();
echo $http_request->getResponseBody();

끝.. 헉헉.. 글 쓰기 힘들다. CodeIgniter 를 제대로 활용하기 위한 것도 꽤 힘들다..
  목록  

서치 2010-05-27 01:40:36
  
누군가  이미 테스트해서 올리신거 봤습니다. 굳이 올리는건 Code쪽에 있는 편이 낫지 않을까 해서네요.

심한 뒷북이라면 양해 해주세여...
양승현 2010-05-27 20:52:05
  
유용한 정보네요.. ^^;

감사합니다.
번호 제   목 글쓴이 날짜 조회 추천수
580 CodeIgniter SimpleXML library [0] 타로 2012-02-05 29 0
577 CI 와 Smarty 템플릿의 결합 [2] 불의회상 2012-01-26 156 0
573 Okada Design Blog 소개 [3] 타로 2012-01-12 272 0
568 woctopus 계정관리도구 [2] milosz 2012-01-09 211 0
566 업로드된 이미지 정사각형으로 썸네일 만드는 함수 [3] 불의회상 2012-01-06 221 0
554 코드 이그나이터를 접하고 처음으로 만들어본 객체 입.. [6] 내일은 2011-11-11 1246 0
528 모델코드 생성기 [25] 불의회상 2011-10-13 1144 1
525 ci memo + tank_auth [2] milosz 2011-10-04 943 0
512 포럼소스를 2.0.1 버전에 맞게 수정하였습니다. [2] 탱크 2011-04-02 3546 2
509 CI 메뉴얼 CHM 버전(영문 2.0) [1] 브라이언 2011-03-30 1242 0
508 CI 메뉴얼 CHM 버전 [0] 브라이언 2011-03-30 1382 0
494 ci memo [8] pam 2011-02-20 1971 1
489 CI 압축 프로그램 [2] 준이 2010-12-27 1636 0
482 듬직이님의 헬퍼 ip 부분 추가. [0] 나이유미 2010-11-22 1998 0
475 SELECT() 사용 시 문제점 [2] 마냐 2010-09-16 2742 0
473 CI의 사용자 인증 소스파일 [2] corean 2010-09-12 3142 0
471 CI 1.7.2 한글 언어팩 1.1 [1] cleansugar 2010-08-26 2220 0
470 Upload 라이브러리 수정본 [0] sisco 2010-07-28 2398 0
464 iScaffold [4] 준이 2010-07-26 1981 0
458 이미지 등분하기_helper [0] 마냐 2010-06-18 2226 0