takuya/php-stringio

为流对象(php://memory)提供StringIO

dev-master 2021-08-23 02:05 UTC

This package is auto-updated.

Last update: 2024-09-23 13:52:30 UTC


README

<CircleciTest>

将字符串作为IO流对象。为了避免大字符串拆分成大数组。

无需多言,SplFileObject('php://memory','w+')是最佳选择,但过于复杂。

安装

composer requore takuya/php-stringio

用法

$sio = new StringIO("1234\n");
$sio->write("aaaa\n");
$sio->write("bbbb\n");
$sio->write("cccc\n");
$sio->rewind();
foreach ( $sio->lines() as $line) {
  var_dump($line);
}
$sio->close();

与SplFileObject相同

$sio = new \SplFileObject('php://memory','w+');
$sio->fwrite("1234\n");
$sio->fwrite("aaaa\n");
$sio->fwrite("bbbb\n");
$sio->fwrite("cccc\n");
foreach ( $sio as $line) {
  var_dump(trim($line));
}
unset($sio);

SplFileObject有太多继承的方法。

与SplFileObject的不同之处

  • trim() -- 不包含换行符(如"\r"或"\n")
  • 方法较少 -- 没有继承的方法
  • f-前缀 -- 没有 f-(fwrite/write)前缀
  • yield -- lines()中的生成器
  • close -- SplFileObject没有fclose()方法

方法

  • StringIO#rewind
  • StringIO#seek
  • StringIO#tell
  • StringIO#resource
  • StringIO#close
  • StringIO#closed
  • StringIO#readline
  • StringIO#gets
  • StringIO#write
  • StringIO#get_contents
  • StringIO#eof
  • StringIO#lines
  • StringIO#get_meta_data
  • StringIO#__toString