Helper
- 코드이그나이터의 기능 중 하나로, 자주 사용하는 로직을 재활용할 수 있게하는 일종의 라이브러리
- 코드이그나이터는 라이브러리와 헬퍼 두개를 가지고 있다.
|
라이브러리 |
Helper |
공통점(목적) |
라이브러리 |
|
차이점 |
객체 지향(OOP)인 클래스 방식으로 만든다 |
절차지향 함수를 이용해서 만든다. |
Helper 사용법
- 기본 : $this->load->helper('헬퍼의 이름');
- 여러 개의 헬퍼를 가져올 때 : $this->load->helper(array('url', 'HTML'));
- 한번 정의해두면, 이 helper가 로드가 되서 그 다음부터는 helper에 정의되어 있는 함수를 MVC 어느 곳에서든지 사용 가능하다.
- 또는 autoload.php (appliction>config)에서 한번에 결정해줘도 됨. $autoload['helper']=array(); 괄호안에 정의
ex)
URL에 자동으로 링크를 거는 기능이 필요하다고 헀을떄,
우선 그런기능이 필요하다면 직접구현하기 전에 코드이그나이터에서 제공하는 기능이 있는지 찾아보자.
(http://codeigniter-kr.org/user_guide_2.1.0/general/helpers.html)
▣ Helper가 필요한 이유
ex) 날짜 넣기를 통해 헬퍼를 제작하는 방법 알아보기
1. 테이블의 datetime 타입의 필드를 view에 추가
<div><?=$topic->created?></div> (현재 연습 테이블에서의 해당 필드명은 created이다)
2. 가져온 datetime를 보기 좋은 형태로 변경하기
터미널에서 확인 >
select UNIX_TIMESTAMP(created) from topic;
UNIX_TIMESTAMP 형식인 숫자로 변경이 된다
이 숫자는 PHP를 이용해서 다른 포맷으로 변경하기 쉬운 포맷이다.
3. 실제 터미널로 확인한 query문을 코드에 적용시켜주어야 한다. (Model 파일 적용, 데이터베이스 관련이므로)
$this->db->select('UNIX_TIMESTAMP(created) AS created);
created라는 필드명의 데이터를 UNIX_TIMESTAMP 형식으로 바꾸고 그 바꾼 데이터들의 필드명은 created이다.
* $this->db->select() 구문
$this->db->select('필드명'); 구문을 get_where와 같이 실제로 쿼리가 실행되는 구문 전에 써주면,
db->select('필드명') 명령을 받아서 입력해준 필드명에 한에서 쿼리가 실행되는 구문을 보여준다.
ex) * 순서 주의
$this->db->select('created');
$this->db->get_where('topic', array('id'=>$topic_id))->row();
4. 다시 VIEW 로 돌아와서 재정의
<div><?=date('o년 n월 j일, G시 i분 s초', $topic->created);?></div>
date라고 하는 php 함수를 이용해서 o라고 하는 것은 타임스탬프에서 연도에 해당하는 부분을 치환, n=월, j=일, G=시, i=분, s=초
1~4번까지의 과정을 많이 하기도 하고, o가 연도를 치환하는 등 기억하기가 힘들어서
한국에서 많이 사용하는 단위를 모아둔 라이브러리로 이 로직을 독립시켜서 다른 로직에서 쉽게 사용할 수 있고, 다른 프로젝트로도 쉽게 이전할 수 있는 기능(방법)이 있다. 이러한 기능이 코드이그나이터의 라이브러리와 Helper. 바로 아래에서 Helper를 제작하는 방법을 다룬다.
▣ 직접 Helper를 제작하는 방법
헬퍼를 사용하려면 함수 기반의 라이브러리이기 때문에 클래스, OOP개념을 모를 때 가볍게 사용할 수 있는 독립 된 로직을 만들 수 있다.
1. application/helper디렉토리에
2. 파일명_helper.php파일을 만들고
3. 그 속에 method()를 정의한다. (Line 4)
Line 1 : 원하지 않는 사용으로 실행되는 것을 막기 위해 추가, 직접적으로 이 스크립트를 실행하지 못하도록 하는 로직을 추가한다.
Line 3 : 정의한 mehthod(함수)가 존재하는지 체크, Helper는 전역함수이기 때문에 그 전에 정의한 적이 있다면 에러가 발생하기 때문에.
- kdate : 3번에서 정의한 method 명 -
4. helper array에 2번의 파일명으로 파라미터 추가.
5, <div><?=date('o년 n월 j일, G시 i분 s초', $topic->created);?></div> => <div><?=method명($topic->created)?></div>
'Language > PHP' 카테고리의 다른 글
[CodeIgniter] 로그 (0) | 2017.08.19 |
---|---|
[CodeIgniter] 설정 (0) | 2017.08.19 |
[CodeIgniter] URI Routing (0) | 2017.08.17 |
[CodeIgniter] MVC (0) | 2017.08.17 |
CodeIgniter (코드이그나이터) (0) | 2017.08.17 |