CI Helper

Posted by Albert 4085Day 10Hour 22Sec ago [2014-02-11]

Helper

헬퍼란 자주 사용하는 로직을 재활용 할 수 있게 만든 일종의 Library다. CI에는 라이브러리라는 개념이 별도로 존재하는데 Helper와 Library의 차이점은 Helper가 객체지향이 아닌 독립된 함수라면 Libary는 객체지향인 클래스다. 

Helper 사용

CI에서 기본적으로 제공하는 Helper는 아래와 같다. 

  • 배열(Array)
  • CAPTCHA 헬퍼
  • 쿠키(Cookie)
  • 날짜(Date)
  • 디렉토리(Directory)
  • 다운로드(Download)
  • 이메일(Email)
  • 파일(File)
  • 폼(Form)
  • HTML
  • 인플렉터(어형변화)
  • 언어(Language)
  • 숫자(Number)
  • 경로(Path)
  • 보안(Security)
  • 스마일리(Smiley)
  • 문자열(String)
  • 텍스트처리(Text)
  • 타이포그라피(Typography)
  • URL
  • XML

핼퍼를 사용하기 위해서는 사용하고자 하는 Helper를 로드해야 한다. 핼퍼를 로드할 때는 아래와 같은 방법을 사용한다.

1
$this->load->helper('핼퍼의 이름');

복수의 핼퍼를 로드하기 위해서는 아래와 같이 한다.

1
$this->load->helper(array('핼퍼1의 이름', '핼퍼2의 이름'));

또는 application/config/autoload.php의 $autoload helper 값으로 핼퍼 리스트가 담긴 배열을 전달하면 된다. 

1
$autoload['helper'] = array('url', 'file');

예를들어 URL과 관련된 Helper를 로드하려면 아래와 같이 한다. 

1
$this->load->helper('url');

그리고 Controller,View,Model에서 url 핼퍼와 관련된 함수를 호출하면 된다. 

Helper 제작

Helper는 가볍게 만들기 좋은 라이브러리다. 만드는 방법은 아래와 같다.

  1. application/helper 디렉토리에 
  2. date_helper.php 파일을 만들고 
  3. 그 속에 korean_date()를 정의한다.

태그

태그명 : Helper

태그주소 : https://github.com/egoing/codeigniter_codeingeverbody/tree/Helper

예제

application/controllers/topic.php

차이점

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Topic extends CI_Controller {
function __construct()
{
parent::__construct();
$this->load->database();
$this->load->model('topic_model');
}
function index(){
$this->load->view('head');
$topics = $this->topic_model->gets();
$this->load->view('topic_list', array('topics'=>$topics));
$this->load->view('main');
$this->load->view('footer');
}
function get($id){
$this->load->view('head');
$topics = $this->topic_model->gets();
$this->load->view('topic_list', array('topics'=>$topics));
$topic = $this->topic_model->get($id);
$this->load->helper(array('url', 'HTML', 'korean'));
$this->load->view('get', array('topic'=>$topic));
$this->load->view('footer');
}
}
?>

application/helper/korean_helper.php

1
2
3
4
5
6
7
if ( ! defined('BASEPATH')) exit('No direct script access allowed');
if ( ! function_exists('kdate')){
function kdate($stamp){
return date('o년 n월 j일, G시 i분 s초', $stamp);
}
}

application/models/topic_model.php

차이점

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Topic_model extends CI_Model {
function __construct()
{
parent::__construct();
}
function gets(){
return $this->db->query("SELECT * FROM topic")->result();
}
function get($topic_id){
$this->db->select('id');
$this->db->select('title');
$this->db->select('description');
$this->db->select('UNIX_TIMESTAMP(created) AS created');
return $this->db->get_where('topic', array('id'=>$topic_id))->row();
}
}

application/view/get.php

차이점




LIST

Copyright © 2014 visionboy.me All Right Reserved.