🐥

入出力ストリーム

2021/04/07に公開

CLI SAPI には入出力ストリーム用の定数がいくつか定義されており、 これらを使うとコマンドライン用のプログラミングが多少簡単になります。

**CLI 固有の定数

※CLIとはコマンドラインのこと
定数

**STDIN
stdin へのオープン済みのストリーム。 これにより、以下のようにオープンする必要がなくなります。

<?php
$stdin = fopen('php://stdin', 'r');
?>
stdin から1行読み込みたい場合、以下のようにします。
<?php
$line = trim(fgets(STDIN)); // STDIN から 1 行読み込む
fscanf(STDIN, "%d\n", $number); // STDIN から数値を読み込む
?>

**STDOUT
stdout へのオープン済みのストリーム。 これにより、以下のようにオープンする必要がなくなります。

<?php
$stdout = fopen('php://stdout', 'w');
?>

**STDERR
stderr へのオープン済みのストリーム。 これにより、以下のようにオープンする必要がなくなります。

<?php
$stderr = fopen('php://stderr', 'w');
?>

※上記のように、stderr のようなストリームを自分で オープンする必要はなく、以下のようにストリームリソースの代わりに 定数を使用するだけでかまいません。
php -r 'fwrite(STDERR, "stderr\n");'

Discussion