헬퍼 함수

헬퍼란 무엇입니까?

이름에서 알 수 있듯이 헬퍼는 작업을 도와줍니다. 각 헬퍼 파일은 단순히 특정 범주의 함수 모음입니다. 링크 생성에 도움이 되는 URL Helpers, 양식 요소 생성에 도움이 되는 Form Helpers, 다양한 텍스트 서식 지정 루틴을 수행하는 Test Helpers, 쿠키를 설정하고 읽는 Cookie Helpers, Filesystem Helpers, 파일 처리에 도움이 되는 등이 있습니다.

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

CodeIgniter는 기본적으로 헬퍼 파일을 로드하지 않으므로 헬퍼 사용의 첫 번째 단계는 헬퍼 파일을 로드하는 것입니다. 로드되면 controllerviews에서 전역적으로 사용할 수 있게 됩니다.

헬퍼는 일반적으로 system/Helpers 또는 app/Helpers 디렉터리에 저장됩니다.

헬퍼 로딩

참고

URL 헬퍼은 항상 로드되므로 직접 로드할 필요가 없습니다.

헬퍼 로딩

다음 방법을 사용하면 헬퍼 파일을 로드하는 것이 매우 간단합니다.

<?php

helper('name');

위 코드는 name_helper.php 파일을 로드합니다.

중요

CodeIgniter 헬퍼 파일 이름은 모두 소문자입니다. 따라서 helper('Name')은 Linux와 같이 대소문자를 구분하는 파일 시스템에서는 작동하지 않습니다.

예를 들어, cookie_helper.php이라는 쿠키 헬퍼 파일을 로드하려면 다음을 수행합니다.

<?php

helper('cookie');

참고

helper() 함수는 값을 반환하지 않으므로 값을 변수에 할당하지 마세요. 표시된 대로 사용하면 됩니다.

자동 검색 및 작성기 패키지

기본적으로 CodeIgniter는 자동 검색으로 정의된 모든 네임스페이스에서 헬퍼 파일을 검색합니다. Spark 명령으로 정의된 네임스페이스를 확인할 수 있습니다. 네임스페이스 확인을(를) 참조하세요.

많은 Composer 패키지를 사용하는 경우 정의된 네임스페이스도 많이 있게 됩니다. CodeIgniter는 기본적으로 모든 네임스페이스를 검색합니다.

관련 없는 Composer 패키지를 검색하는 데 시간을 낭비하지 않으려면 자동 검색용 패키지를 수동으로 지정할 수 있습니다. 자세한 내용은 Composer 패키지 지정을 참조하세요.

또는 로드하려는 헬퍼에 대해 specify a namespace을(를) 수행할 수 있습니다.

로드 순서

helper() 함수는 정의된 모든 네임스페이스를 검색하고 동일한 이름의 일치하는 모든 헬퍼를 로드합니다. 이를 통해 모든 모듈의 헬퍼는 물론 이 응용 프로그램을 위해 특별히 만든 헬퍼도 로드할 수 있습니다.

로드 순서는 다음과 같습니다.

  1. app/Helpers - 여기에 로드된 파일은 항상 먼저 로드됩니다.

  2. {namespace}/Helpers - 모든 네임스페이스는 정의된 순서대로 반복됩니다.

  3. system/Helpers - 기본 파일이 마지막으로 로드됩니다.

여러 헬퍼 로딩

한 번에 두 개 이상의 헬퍼를 로드해야 하는 경우 파일 이름 배열을 전달하면 모든 헬퍼가 로드됩니다.

<?php

helper(['cookie', 'date']);

컨트롤러에 로드

헬퍼는 사용하기 전에 로드하기만 하면 컨트롤러 메서드 내(또는 좋은 방법은 아니지만 View 파일 내에서도) 어디에서나 로드할 수 있습니다.

헬퍼 생성자에서 헬퍼를 로드하여 모든 메서드에서 자동으로 사용할 수 있도록 하거나, 필요한 특정 메서드에서 헬퍼를 로드할 수 있습니다.

그러나 컨트롤러 생성자에 로드하려면 컨트롤러에서 $helpers 속성을 대신 사용할 수 있습니다. Controllers을(를) 참조하세요.

지정된 네임스페이스에서 로드

기본적으로 CodeIgniter는 정의된 모든 네임스페이스에서 헬퍼 파일을 검색하고 발견된 모든 파일을 로드합니다.

특정 네임스페이스의 헬퍼만 로드하려면 헬퍼 이름 앞에 헬퍼가 위치할 수 있는 네임스페이스를 붙입니다. 해당 네임스페이스 디렉터리 내에서 로더는 해당 헬퍼가 Helpers이라는 하위 디렉터리에 있을 것으로 예상합니다. 이를 이해하는 데 예가 도움이 될 것입니다.

이 예에서는 모든 블로그 관련 코드를 자체 네임스페이스인 Example\Blog로 그룹화했다고 가정합니다. 파일은 Modules/Blog/에 있는 당사 서버에 있습니다. 따라서 블로그 모듈용 헬퍼 파일을 Modules/Blog/Helpers/에 넣습니다. blog_helper 파일은 Modules/Blog/Helpers/blog_helper.php에 있습니다. 컨트롤러 내에서 다음 명령을 사용하여 헬퍼를 로드할 수 있습니다.

<?php

helper('Example\Blog\blog');

다음 방법을 사용할 수도 있습니다.

<?php

helper('Example\Blog\Helpers\blog');

참고

이런 방식으로 로드된 파일 내의 함수는 실제로 네임스페이스가 지정되지 않습니다. 네임스페이스는 단순히 파일을 찾는 편리한 방법으로 사용됩니다.

자동 로딩 헬퍼

Added in version 4.3.0.

애플리케이션 전반에 걸쳐 특정 헬퍼가 필요하다고 판단되면 CodeIgniter에 시스템 초기화 중에 이를 자동 로드하도록 지시할 수 있습니다. app/Config/Autoload.php 파일을 열고 $helpers 속성에 헬퍼를 추가하면 됩니다.

헬퍼 사용

사용하려는 함수가 포함된 헬퍼 파일을 로드한 후에는 표준 PHP 함수와 같은 방식으로 호출하게 됩니다.

예를 들어, 보기 파일 중 하나에서 anchor() 함수를 사용하여 링크를 생성하려면 다음을 수행합니다.

<div>
<?= anchor('blog/comments', 'Click Here') ?>
</div>

여기서 Click Here은 링크 이름이고 blog/comments은 링크하려는 컨트롤러/메서드에 대한 URI입니다.

헬퍼 만들기

사용자 정의 헬퍼 만들기

헬퍼 파일 이름은 helper name_helper.php입니다.

예를 들어 정보 헬퍼를 만들려면 app/Helpers/info_helper.php이라는 파일을 만들고 파일에 함수를 추가합니다.

<?php

// app/Helpers/info_helper.php
use CodeIgniter\CodeIgniter;

/**
 * Returns CodeIgniter's version.
 */
function ci_version(): string
{
    return CodeIgniter::CI_VERSION;
}

단일 헬퍼 파일에 원하는 만큼 많은 함수를 추가할 수 있습니다.

“확장” 헬퍼

헬퍼를 “확장”하려면 app/Helpers 폴더에 기존 헬퍼와 동일한 이름으로 파일을 만듭니다.

기존 헬퍼에 일부 함수를 추가하기만 하면 됩니다(예: 한두 가지 함수를 추가하거나 특정 헬퍼 함수가 작동하는 방식을 변경하는 경우). 그러면 전체 헬퍼를 사용자 버전으로 바꾸는 것은 과잉입니다. 이 경우 헬퍼를 간단히 “확장”하는 것이 좋습니다.

참고

“확장”이라는 용어는 헬퍼 함수가 절차적이고 개별적이며 전통적인 프로그래밍 방식으로 확장될 수 없기 때문에 느슨하게 사용됩니다. 내부적으로는 헬퍼가 제공하는 함수를 추가하거나 대체할 수 있는 기능을 제공합니다.

예를 들어 기본 Array Helper을 확장하려면 app/Helpers/array_helper.php이라는 파일을 만들고 함수를 추가하거나 재정의합니다.

<?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 : [$needle];

    foreach ($needle as $item) {
        if (in_array($item, $haystack, true)) {
            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);
}

중요

네임스페이스 App\Helpers을 지정하지 마십시오.

헬퍼 파일이 로드되는 순서는 Load Order을 참조하세요.

이제 무엇을?

목차에는 사용 가능한 모든 Helpers 목록이 나와 있습니다. 각각의 동작을 살펴보고 무엇을 하는지 알아보세요.