echo
はfputs( STDOUT )
と等しいですか、それともecho
は別のストリームに書き込みますか?私はしばらくの間PHPを使用しましたが、実際に下位レベルで何が起こっているのかよくわかりません。
ラッパーに関するPHPのマニュアルページ によると、答えは「いいえ」です。
php:// output
php:// outputは書き込み専用のストリームで、print()やecho()と同じ方法で出力バッファメカニズムに書き込むことができます。
print
とecho
は_php://output
_ストリームに書き込みますが、fputs(STDOUT)
は_php://stdout
_に書き込みます。
私は少しテストをしました:
_<?php
$output = fopen('php://output', 'w');
ob_start();
echo "regular echo\n";
fwrite(STDOUT, "writing to stdout directly\n");
fwrite($output, "writing to php://output directly\n");
$ob_contents = ob_get_clean();
print "ob_contents: $ob_contents\n";
_
このスクリプトの出力(PHP 5.2.13、windows)でテスト済み):
_writing to stdout directly
ob_contents: regular echo
writing to php://output directly
_
つまり、STDOUT
への書き込みは、obハンドラーを直接バイパスします。