Skip to main content

Artisan이란

Artisan은 Laravel에 포함되어 있는 커맨드라인 인터페이스(CLI) 도구입니다. 프로젝트 루트의 artisan 스크립트로 존재하며, 개발과 운영을 효율화하는 다수의 명령어를 제공합니다. 사용 가능한 명령어 목록을 확인하려면 list 명령어를 사용합니다.
명령어의 사용법을 확인하려면 help를 앞에 붙입니다.
Laravel Sail을 사용하는 경우, php artisan 대신에 sail artisan을 사용하십시오. 명령어는 Docker 컨테이너 내에서 실행됩니다.

Tinker

Laravel Tinker는 Eloquent 모델이나 Job, 이벤트 등 애플리케이션 전체를 커맨드라인 상에서 인터랙티브하게 조작할 수 있는 REPL 환경입니다.
기동 후에는 PHP 코드를 그대로 실행할 수 있습니다.
Tinker는 데이터를 실제로 변경합니다. 운영 환경에서의 실행은 충분히 주의하십시오. 로컬이나 스테이징 환경에서의 동작 확인, 디버깅 용도에 적합합니다.

커스텀 명령어 작성

명령어 생성

make:command로 명령어 클래스의 골격을 생성합니다.
app/Console/Commands/ImportProducts.php가 생성됩니다.

명령어의 기본 구조

생성된 명령어 클래스에는 $signature, $description, handle()이라는 3가지 주요 요소가 있습니다.
Laravel 13에서는 PHP 어트리뷰트를 사용한 작성법도 이용할 수 있습니다.

인수와 옵션의 정의

$signature에 명령어 이름, 인수, 옵션을 함께 정의합니다.

인수와 옵션의 취득

handle() 메서드 내에서 argument()option()을 사용해 값을 취득합니다.

input() — 타입 지정 접근자

input() 메서드를 사용하면 HTTP 요청과 동일한 타입 지정 접근자로 명령어의 인수나 옵션을 취득할 수 있습니다.
특정 이름만 취득하고 싶은 경우 이름을 직접 전달합니다(인수와 옵션 양쪽에서 검색됩니다).
argument()option()이 문자열을 반환하는 데 반해, input()의 타입 지정 접근자는 적절한 타입으로 변환합니다. 날짜, 숫자, Enum 등 타입 안전하게 다루고 싶은 경우에 편리합니다.

사용자와의 인터랙션

메시지 출력

콘솔에 색상이 있는 메시지를 출력하는 메서드가 준비되어 있습니다.

사용자에게 질문

대화적으로 사용자로부터 입력을 받을 수 있습니다.

프로그레스 바

대량 데이터 처리 중에 진행 상황을 알기 쉽게 표시할 수 있습니다.
수동으로 세밀하게 제어하고 싶은 경우 다음 방법을 사용합니다.

실용적인 유스케이스

데이터 임포트 명령어

CSV 파일에서 상품 데이터를 임포트하는 실전적인 명령어 예시입니다.
1

명령어 생성

2

명령어 구현

3

명령어 실행

정기 유지보수 명령어

오래된 데이터의 삭제 등, 정기적으로 실행할 유지보수 명령어의 예시입니다.

스케줄 실행과의 조합

작성한 명령어는 routes/console.php에서 스케줄 실행할 수 있습니다. 자세한 내용은 태스크 스케줄링을 참조하십시오.

명령어 테스트

Laravel의 테스트 기능을 사용해 Artisan 명령어의 동작을 검증할 수 있습니다.
artisan() 메서드에서 사용할 수 있는 어서션 메서드의 예시:

자주 사용하는 명령어 정리

마지막 수정일 2026년 7월 13일