phpに於ける StringIO
php にはStringIOが無いと存じます。無いのではなく、必要がないのです。
stringio を実現する
$string_io = new \SplFileObject('php://memory','w+');
これだけです。SplFileObjectが最強です。
もしくは、fopen
$fp = fopen('php://memory','w+');
読み込み書き込み
SplFileObject がストリームのように扱えます。
$string_io = new \SplFileObject('php://memory','w+'); $string_io->fwrite("aaa\n"); $string_io->fwrite("bbb\n"); $string_io->fwrite("ccc\n"); $string_io->rewind(); foreach( $string_io as $line){ var_dump( trim($line)); }
ただし、trim が必要な点。 fwrite と f-XX が冗長な点。また SplFileObject 自身が大量に継承メソッドを持ち、自分自身がIterable であり、ちょっとわかりにくいんじゃないかと思います。
組み込みで使えるし require 不要でいつでも使えるので便利ではあるのですが。
SplFileObject
というクラス名は、ファイルを連想させコードリーディングの障害になりかねない。そのため変数名を$string_io
と意図を明確に書くべきだとおもう。
SplFileObject よりも fopen で php://memory を使ってみたらどうなるか、実装例も作ってみたが、SplFileObjectで十分だと思う。