php - 从 SplFileInfo 对象获取流资源

标签 php spl splfileobject

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

$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/

相关文章:

PHP:将远程pdf流式传输到客户端浏览器

php - 重组 SplObjectStorage 实例的子实例

php - OutOfRangeException 与 OutOfBoundsException

php - 从文件 PHP 中删除前 X 行

php - 解释一个显示销量最高的 3 辆汽车的 MySQLi 查询

PHP从数据库中选择随机ID

php - 切换添加到收藏夹/从收藏夹中删除 - 不工作

php - 使用 PHP 的 RecursiveIteratorIterator 遍历多维数组

php - 有没有更快的方法使用 php 将数据从文件导入 MySQL?