생활코딩

Coding Everybody

코스 전체목록

닫기

Helper

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를 로드해야 한다. 핼퍼를 로드할 때는 아래와 같은 방법을 사용한다.

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

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

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

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

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

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

$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

차이점

코드

<?php 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

<?php 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

차이점

코드

<?php
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

차이점

코드

<div class="span10">
	<article>
		<h1><?=$topic->title?></h1>
		<div>
			<div><?=kdate($topic->created)?></div>
			<?=auto_link($topic->description)?>
		</div>
	</article>
</div>

참고

http://codeigniter-kr.org/user_guide_2.1.0/general/helpers.html

 

댓글

댓글 본문
버전 관리
egoing
현재 버전
선택 버전
graphittie 자세히 보기