본문 바로가기

Language/PHP

[CodeIgniter] Helper

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