CLI를 통한 컨트롤러 실행

애플리케이션의 Controllers 를 브라우저 URL로 호출할 수 있듯이, 명령줄 인터페이스(CLI)를 통해서도 불러올 수 있습니다.

참고

CLI 스크립트는 CLI로 컨트롤러를 호출하기보다 Spark Commands를 사용하는 것이 권장됩니다. 자세한 내용은 Spark 명령Spark 명령 만들기 페이지를 참고하세요.

직접 해봅시다: Hello World!

컨트롤러 만들기

간단한 컨트롤러를 만들어 동작을 확인해 봅시다. 텍스트 편집기로 Tools.php라는 파일을 만들고, 다음 코드를 넣습니다:

<?php

namespace App\Controllers;

use CodeIgniter\Controller;

class Tools extends Controller
{
    public function message($to = 'World')
    {
        return "Hello {$to}!" . PHP_EOL;
    }
}

참고

자동 라우팅(향상) 를 사용한다면 메서드 이름을 cliMessage() 로 바꿉니다.

그다음 파일을 app/Controllers/ 디렉터리에 저장합니다.

라우트 정의

자동 라우팅을 사용한다면 이 단계는 건너뜁니다.

app/Config/Routes.php 파일에서 CLI로만 접근 가능한 라우트를 다른 라우트와 똑같이 쉽게 만들 수 있습니다. get(), post() 같은 메서드 대신 cli() 메서드를 사용하면 됩니다. 나머지는 일반 라우트 정의와 완전히 같습니다:

<?php

$routes->cli('tools/message/(:segment)', 'Tools::message/$1');

자세한 내용은 Routes 페이지를 참고하세요.

경고

Auto Routing (Legacy) 를 활성화하고 명령 파일을 app/Controllers 에 두면, 누구나 HTTP를 통해 Auto Routing (Legacy) 의 도움으로 해당 명령에 접근할 수 있습니다.

CLI로 실행

보통은 다음과 비슷한 URL로 사이트에 접속하겠지만:

example.com/index.php/tools/message/to

대신 Mac/Linux에서는 터미널을 열고, Windows에서는 Run > “cmd”로 이동한 뒤 CodeIgniter 프로젝트의 웹 루트로 이동합니다.

$ cd /path/to/project/public
$ php index.php tools message

정상적으로 했다면 “Hello World!” 가 출력되어야 합니다.

$ php index.php tools message "John Smith"

여기서는 URL 매개변수가 동작하는 방식과 같은 방법으로 인자를 전달합니다. “John Smith” 가 인자로 전달되고 출력은 다음과 같습니다:

Hello John Smith!

기본은 여기까지!

요약하면, 명령줄에서 컨트롤러를 사용하는 방법은 이것이 전부입니다. 이것도 일반 컨트롤러이므로 라우팅과 _remap() 이 정상적으로 동작한다는 점을 기억하세요.

참고

_remap()자동 라우팅(향상) 와 함께 사용할 수 없습니다.

CLI로 실행 중인지 확인하려면 is_cli() 의 반환값을 확인하세요.

하지만 CodeIgniter는 CLI에서 접근 가능한 스크립트를 더 편하게 만들 수 있도록 CLI 전용 라우팅과 CLI 전용 도구를 돕는 라이브러리 같은 추가 도구도 제공합니다.