7

我正在调用一个需要文件流资源的方法,如下所示:

$obj->method(fopen($splFileInfo, 'r+'));

$splFileInfo对象是 的一个实例SplFileInfo

$splFileInfo有没有办法在不调用的情况下获取对象的流资源fopen

4

1 回答 1

-1

您可以使用openfile创建一个SplFileObject,它提供与资源类似的功能,但以面向对象的方式。一个缺点是它不直接公开它包装的资源,因此您必须调整现在期望资源使用 SplFileObject 的任何实现。

一些示例代码向您展示我的意思:

class TextReader {
  public function getFirstLine(SplFileInfo $file): string {
      return $file->fgets();
    }
}

$splFileInfo = new SplFileInfo('filename.txt');
$splFileObject = $splFileInfo->openFile('r+');
$reader = new TextReader();
echo $reader->getFirstLine($splFileObject);
于 2019-07-26T09:26:39.813 回答