【PHP】コンソールの標準出力で値の入力を受け取る。

めも。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// 警告文を出す際のなんらかの条件式
if(true) {
    // コンソール上に表示する出力文
    echo '警告文 [y/n] : ';
    $input = null;
    while(1) {
        $input = fgets(STDIN, 4096);
        if($input == "n\n" || $input == "no\n") {
            // 処理を終了する
            die();
        }
        if($input == "y\n" || $input == "yes\n") {
            // 処理を続行する
            break;
        }
        echo '[y] [yes] [n] [no] のいずれかを入力してください : ';
    }
}

こんな感じでOK。
ちなみにSTDINはstdinへのオープン済みストリーム。そのためfopenなどでのストリームオープン無しに利用することが可能。
fgets(STDIN)とするとその地点で入力待機状態になるため、コンソール上から値を入力することができる。