리눅스 터미널에서 PHP와 대화하기 (부제: PHP에서 C/C++ scanf 사용하기)

리눅스 터미널(Linux Terminal)를 접속해서 작업하는 개발자라면 터미널에서 실행되는 스크립트도 작성한다.
일반적으로 간단한 스크립트 작성 시 셀 스크립트(Shell Script) 혹은 파이썬(Python)를 사용한다.(개인적인 생각이므로 아닐 수도 있다.)

그런데 스크립트 작성 시 현재 주 개발 언어로 작성하는게 편하지 않겠는가?
모든 소프트웨어 언어에는 장단점이 있으니 어떤 언어로 해야된다를 말하고 싶은건 아니다.


사용자와 대화를 하면서 실행되는 스크립트 작성 시 PHP에서 어떻게 해야할까?
(많은 사용자가 있어 같은 고민을 하지 않았을까 하는 생각이 들었다.)


다른 언어들은 어떻게 하는가?
  • C/C++: scnaf()
  • Python: raw_input()
  • Bash/Shell Script: read
그러나 아쉽게다 PHP는 내장 함수가 없다.
하지만 동일한 효과를 만들어서 사용할 수 있다.

/**
 * 입력 받기
 *
 * @param string 질문
 * @return string 답변
 */
public function cliInput($sQuestion = 'Ask Question?', $iLength = 4096) {
    echo $sQuestion;
    /*
     * 아래 형식으로도 사용 가능
     * $oHandle = fopen('php://stdin', 'r');
     * $sAnswer = trim(fgets($oHandle, $iLength));
     * fclose($oHandle);
     */
    $sAnswer = trim(fgets(STDIN, $iLength));
    return $sAnswer;
}

시간되면 아래 [참고] 정보도 확인해보는 걸 추천한다.


[참고] 참고 문서
[참고] 관련 기본 함수
[참고] 관련 확장 함수