GNU Readline
GNU Readline
PHP가 명령줄(CLI) 환경에서 대화형 입력을 처리할 수 있게 해 주는 readline 확장을 살펴볼게요. 쉘에서 방향키나 히스토리를 쓸 수 있는 그 기능을 PHP에서도 쓸 수 있게 해 주는 녀석이에요.
본문
readline 함수는 GNU Readline 라이브러리에 대한 인터페이스를 제공해요. 이 함수들은 편집 가능한 명령줄(editable command lines) 을 만들어 주는데, 대표적인 예가 바로 Bash에서 방향키로 문자를 삽입하거나 명령 히스토리를 오가며 스크롤하는 방식이에요. 이 라이브러리는 본질적으로 대화형이기 때문에 웹 애플리케이션을 작성할 때는 거의 쓸모없지만, 명령줄에서 실행하는 스크립트를 작성할 때는 아주 유용해요.
PHP 7.1.0부터 이 확장은 Windows에서도 지원되며, 그때는 libedit을 기반으로 빌드돼요. 다만 모든 함수가 그 빌드에 포함되는 건 아니니 요구사항을 확인해 주세요.
⚠️ 주의: readline 확장은 스레드에 안전하지 않아요(thread-safe가 아님)! 그래서 Apache mod_winnt처럼 진짜 스레드 안전 SAPI와 함께 쓰는 것은 강하게 권장하지 않아요.
Readline 함수
readline— 한 줄을 읽어요readline_add_history— 히스토리에 한 줄을 추가해요readline_callback_handler_install— readline 콜백 인터페이스와 터미널을 초기화하고, 프롬프트를 출력한 뒤 즉시 반환해요readline_callback_handler_remove— 이전에 설치한 콜백 핸들러를 제거하고 터미널 설정을 복원해요readline_callback_read_char— 문자를 읽고, 한 줄이 수신되면 readline 콜백 인터페이스에 알려줘요readline_clear_history— 히스토리를 비워요readline_completion_function— 자동 완성 함수를 등록해요readline_info— 내부 readline 변수들을 가져오거나 설정해요readline_list_history— 히스토리를 나열해요readline_on_new_line— 커서가 새 줄로 이동했음을 readline에 알려줘요readline_read_history— 히스토리를 읽어요readline_redisplay— 화면을 다시 그려요readline_write_history— 히스토리를 저장해요
더 알아보기
- PHP: Readline - Manual — 각 함수의 상세 레퍼런스