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

$obj->method(fopen($splFileInfo, 'r+'));
$splFileInfo对象是SplFileInfo的实例。

有没有一种方法可以获取$splFileInfo对象的流资源,而不必调用fopen

最佳答案

您可以使用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);

关于php - 从SplFileInfo对象获取流资源,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20374969/

10-11 13:33