我正在调用一个期望文件的流资源的方法,如下所示:
$obj->method(fopen($splFileInfo, 'r+'));
$splFileInfo
对象是SplFileInfo
的实例。
有没有办法获取$splFileInfo
对象的流资源而无需调用fopen
?
答案 0 :(得分:0)
您可以使用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);