'codeIgniter'에 해당하는 글 22건


CodeIgniter 는 아래 함수를 이용하여 에러 리포트를 생성합니다.

1. show_error('message' [, int $status_code= 500 ])

이 함수는 application/errors/error_general.php 템플릿으로 에러 메시지를 보여줄 것입니다.


2. show_404('page' [, 'log_error'])

이 함수는 application/errors/error_404.php 템플릿으로 에러 메시지를 보여줄 것입니다.
CodeIgniter는 show_404() 호출을 자동으로 기록하지만 log_error 를 FALSE로 지정하면 기록을 건너뛸 수 있습니다.


3. log_message('level', 'message')

이 함수는 로그 파일에 메시지를 기록하게 한다. 에러 메시지 타입은 debug, error, info 를 제공합니다.
  • error : PHP 에러 같은 실제 에러 메시지.
  • debug : 디버깅을 도와주는 메시지.
  • info : 가장 우선순위가 낮은 메시지.

if ($some_var == "") {
    log_message('error', 'Some variable did not contain a value.');
} else {
    log_message('debug', 'Some variable was correctly set');
}
log_message('info', 'The purpose of some variable is to provide some value.');

로그 파일을 기록하려면 "logs" 디렉토리에 쓰기가 가능해야 합니다.
로그 기록수준은 application/config/config.php 파일의 $config['log_threshold'] 에서 설정할 수 있습니다.

WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,

URI routing

Programming/CodeIgniter 2011. 11. 11. 23:58

라우팅 규칙은 application/config/routes.php 에서 $route 배열을 통해 설정합니다.
와일드카드나 정규표현식으로도 설정할 수 있습니다.
URL 문자열인 mydomain.com/class/function/id 규칙을 변경하고 싶을 때 재매핑(_remap) 함수를 사용합니다.

와일드카드(*)

$route['journals'] = "blogs";
$route['blog/joe'] = "blogs/users/34";
$route['product/:any'] = "catalog/product_lookup";
$route['product/(:num)'] = "catalog/product_lookup_by_id/$1";

:num 은 숫자만 매치
:any 는 어떤 문자든 매치
URL 요청을 받으면 우측의 주소로 재매핑 되며, 마지막 예제의 (:num)는 $1로 전달됩니다.

세그먼트의 앞뒤로 슬래시를 사용하지 않고, 라우트는 상위에 설정된 것이 우선 실행됩니다.
이미 지정된 경로는 다른 라우터들보다 상단에 위치해야 합니다.

$route['default_controller'] = 'welcome';
$route['404_override'] = '';

WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,

Hooks

Programming/CodeIgniter 2011. 11. 11. 19:39

hook는 CodeIgniter의 처리순서 사이에 원하는 기능을 수행하고 싶을 때 사용합니다.

1. Hook 포인트

  • pre_system : 시스템 실행 초기 단계. 벤치마크와 hook 클래스만 로드된 시점.
  • pre_controller : 컨트롤러가 호출되기 직전. 기본 클래스, 라우팅, 보안점검 완료.
  • post_controller_constructor : 컨트롤러가 인스턴스화 된 직후. 호출된 메소드 없음.
  • post_controller : 컨트롤러가 완전히 실행된 직후입니다.
  • display_override : 웹브라우저에 완료된 페이지를 보내기 위해 _display() 함수 오버라이드.
  • cache_override : _display_cache() 함수 대신 사용할 사용자 함수 호출 가능.
  • post_system : 마지막 렌더링된 페이지가 브라우저에 보내진 후에 호출됨.


2. Hook 사용

hook를 사용하려면 application/config/config.php 파일을 수정합니다.

$config['enable_hooks'] = TRUE;


3. Hook 정의

hook 은 application/config/hooks.php 파일에 정의되며, 각 hook는 배열 프로토타입으로 지정됩니다.

$hook['pre_controller'] = array(
    'class'      => 'MyClass',
    'function'  => 'Myfunction',
    'filename' => 'Myclass.php',
    'filepath'   => 'hooks',
    'params'   => array('beer', 'wine', 'snacks')
    );

호출할 클래스, 함수, 파일명, 파일경로, 파라미터를 기록하면 됩니다.
파일경로는 application 디렉토리명을 생략하고, 파라미터는 옵션입니다.

동일한 hook 포인트에서 하나 이상의 스크립트를 사용할 때에는 다차원 배열 선언을 합니다.

$hook['pre_controller'][] = array(...script1...);
$hook['pre_controller'][] = array(...script2...);

WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,

CodeIgniter에는 코어 프레임워크의 일부로, 자동으로 초기화 된 코어 시스템 클래스들이 있습니다.
이미 만들어 진 코어 시스템 클래스는 system/core 디렉토리에 있으며,
사용자 정의 코어 클래스는 application/core 디렉토리에 저장합니다.
코어 시스템 클래스는 CI_ 접두어를 사용해야 하며 사용자 정의 코어 클래스는 MY_ 접두어를 사용합니다.

Input 코어 클래스 확장 예

class MY_Input extends CI_Input {

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


WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,

Drivers

Programming/CodeIgniter 2011. 11. 11. 19:28

Driver 는 부모 클래스와 많은 자식 클래스들을 가진 라이브러리의 특별한 타입입니다.
Driver 는 부모 라이브러리 클래스와 동일한 이름의 디렉토리로, system/libraries 디렉토리에서 찾을 수 있습니다.
또한 해당 디렉토리의 drivers 라는 하위 디렉토리 안에 이용 가능한 자식 클래스 파일들이 포함되어 있습니다.

$this->load->driver('some_parent');
$this->some_parent->some_method();

driver의 자식 클래스는 부모 클래스를 통해 초기화없이 직접 불려질 수 있습니다.

$this->some_parent->child_one->some_method();
$this->some_parent->child_two->another_method();


Driver 디렉토리와 파일 구조

/application/libraries/Driver_name
    Driver_name.php
    drivers
        Driver_name_subclass_1.php
        Driver_name_subclass_2.php
        Driver_name_subclass_3.php

Driver_name 디렉토리는 대문자로 시작해야 합니다.

WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,