輸入和輸出處理
從 CLI 執行時,常量 STDIN , STDOUT 和 STDERR 是預定義的。這些常量是檔案控制代碼,可以認為與執行以下命令的結果等效:
STDIN = fopen("php://stdin", "r");
STDOUT = fopen("php://stdout", "w");
STDERR = fopen("php://stderr", "w");
常量可以在標準檔案控制代碼的任何位置使用:
#!/usr/bin/php
while ($line = fgets(STDIN)) {
$line = strtolower(trim($line));
switch ($line) {
case "bad":
fprintf(STDERR, "%s is bad" . PHP_EOL, $line);
break;
case "quit":
exit;
default:
fprintf(STDOUT, "%s is good" . PHP_EOL, $line);
break;
}
}
之前引用的內建流地址(php://stdin
,php://stdout
和 php://stderr
)可用於代替大多數上下文中的檔名:
file_put_contents('php://stdout', 'This is stdout content');
file_put_contents('php://stderr', 'This is stderr content');
// Open handle and write multiple times.
$stdout = fopen('php://stdout', 'w');
fwrite($stdout, 'Hello world from stdout' . PHP_EOL);
fwrite($stdout, 'Hello again');
fclose($stdout);
作為替代方案,你還可以使用 readline()
進行輸入,也可以使用 echo 或 print 或任何其他字串列印功能進行輸出。
$name = readline("Please enter your name:");
print "Hello, {$name}.";