헬퍼 함수

헬퍼는 이름에서 알 수 있듯이 작업을 도와줍니다. 각 헬퍼 파일은 특정 카테고리의 함수 모음입니다. 링크를 만드는 데 도움이 되는 URL 헬퍼, 폼 요소를 만들도록 도와주는 폼 헬퍼, 텍스트 헬퍼는 다양한 텍스트 서식 루틴을 수행하고, 쿠키 헬퍼는 쿠키를 설정하고 읽으며, 파일 헬퍼는 파일을 다루는 데 도움을 주는 등이 있습니다.

CodeIgniter의 대부분의 다른 시스템과 달리 헬퍼는 객체 지향 형식으로 작성되지 않습니다. 단순하고 절차적인 함수입니다. 각 헬퍼 함수는 다른 함수에 의존하지 않고 하나의 특정 작업을 수행합니다.

CodeIgniter는 기본적으로 헬퍼 파일을 로드하지 않으므로 헬퍼를 사용하는 첫 번째 단계는 로드하는 것입니다. 로드되면 컨트롤러 에서 전역적으로 사용할 수 있습니다.

헬퍼는 일반적으로 system/helpers 또는 application/helpers directory에 저장됩니다. CodeIgniter는 먼저 application/helpers directory에서 찾습니다. 디렉터리가 없거나 지정된 헬퍼가 없으면 전역 system/helpers/ 디렉터리에서 찾습니다.

헬퍼 로드

헬퍼 파일을 로드하는 것은 다음 메소드를 사용하여 매우 간단합니다:

$this->load->helper('name');

여기서 name은 .php 파일 확장자나 “helper” 부분 없이 헬퍼의 파일 이름입니다.

예를 들어 url_helper.php**라는 **URL 헬퍼 파일을 로드하려면 다음과 같이 합니다:

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

헬퍼는 사용하기 전에 로드하는 한 컨트롤러 메소드 내 어디서든 로드할 수 있습니다 (뷰 파일 내에서도 가능하지만 좋은 관행은 아닙니다). 컨트롤러 생성자에 헬퍼를 로드하면 모든 함수에서 자동으로 사용할 수 있으며, 필요한 특정 함수에서 헬퍼를 로드할 수 있습니다.

참고

위의 헬퍼 로딩 메소드는 값을 반환하지 않으므로 변수에 할당하려고 하지 마세요. 표시된 대로 사용하면 됩니다.

여러 헬퍼 로드

둘 이상의 헬퍼를 로드해야 하는 경우 다음과 같이 배열로 지정할 수 있습니다:

$this->load->helper(
        array('helper1', 'helper2', 'helper3')
);

헬퍼 자동 로드

애플리케이션 전반에 걸쳐 특정 헬퍼가 필요하다면 시스템 초기화 중에 자동 로드하도록 CodeIgniter에 지시할 수 있습니다. application/config/autoload.php 파일을 열고 헬퍼를 autoload 배열에 추가하여 이를 수행합니다.

헬퍼 사용

사용하려는 함수가 포함된 헬퍼 파일을 로드하면 표준 PHP 함수처럼 호출하면 됩니다.

예를 들어 뷰 파일 중 하나에서 anchor() 함수를 사용하여 링크를 만들려면 다음과 같이 합니다:

<?php echo anchor('blog/comments', 'Click Here');?>

여기서 “Click Here”는 링크의 이름이고 “blog/comments”는 링크할 컨트롤러/메소드의 URI입니다.

헬퍼 “확장”

헬퍼를 “확장”하려면 application/helpers/ 폴더에 기존 헬퍼와 동일한 이름으로 파일을 만들되 MY_ 접두사를 붙이세요 (이 항목은 구성 가능합니다. 아래 참조).

기존 헬퍼에 일부 기능만 추가하면 되는 경우, 즉 함수를 하나 또는 두 개 추가하거나 특정 헬퍼 함수의 작동 방식을 변경하는 경우, 전체 헬퍼를 자신의 버전으로 교체하는 것은 과도합니다. 이 경우 헬퍼를 단순히 “확장”하는 것이 좋습니다.

참고

“확장”이라는 용어는 느슨하게 사용됩니다. 헬퍼 함수는 절차적이고 독립적이며 전통적인 프로그래밍 방식으로 확장될 수 없습니다. 내부적으로 이는 헬퍼가 제공하는 함수를 추가하거나 교체하는 능력을 제공합니다.

예를 들어 기본 배열 헬퍼**를 확장하려면 **application/helpers/MY_array_helper.php 라는 파일을 만들고 함수를 추가하거나 재정의하세요:

// any_in_array() is not in the Array Helper, so it defines a new function
function any_in_array($needle, $haystack)
{
        $needle = is_array($needle) ? $needle : array($needle);

        foreach ($needle as $item)
        {
                if (in_array($item, $haystack))
                {
                        return TRUE;
                }
        }

        return FALSE;
}

// random_element() is included in Array Helper, so it overrides the native function
function random_element($array)
{
        shuffle($array);
        return array_pop($array);
}

자신만의 접두사 설정

헬퍼를 “확장”하기 위한 파일 이름 접두사는 라이브러리와 코어 클래스를 확장하는 데 사용되는 것과 동일합니다. 자신만의 접두사를 설정하려면 application/config/config.php 파일을 열고 다음 항목을 찾으세요:

$config['subclass_prefix'] = 'MY_';

모든 기본 CodeIgniter 라이브러리에는 CI_ 접두사가 붙으므로 그것을 접두사로 사용하지 마세요.

이제 무엇을?

목차에서 사용 가능한 모든 헬퍼 파일 목록을 찾을 수 있습니다. 각각 살펴보고 무엇을 하는지 확인하세요.