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 전용 도구를 돕는 라이브러리 같은 추가 도구도 제공합니다.