PHP Conference Japan 2024

SplFileObject::__construct

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

SplFileObject::__construct构造一个新的文件对象

描述

public SplFileObject::__construct(
    string $filename,
    string $mode = "r",
    bool $useIncludePath = false,
    ?resource $context = null
)

构造一个新的文件对象。

参数

filename

要读取的文件。

提示

如果启用了fopen 包装器,则可以使用 URL 作为文件名。有关如何指定文件名的更多详细信息,请参阅 fopen()。有关各种包装器的功能、用法说明以及它们可能提供的任何预定义变量的信息链接,请参阅支持的协议和包装器

mode

打开文件的模式。允许的模式列表,请参阅 fopen()

useIncludePath

是否在include_path中搜索filename

context

使用 stream_context_create() 创建的有效上下文资源。

错误/异常

如果无法打开 filename,则抛出 RuntimeException

如果 filename 是一个目录,则抛出 LogicException

范例

示例 #1 SplFileObject::__construct() 例子

此示例打开当前文件并逐行迭代其内容。

<?php
$file
= new SplFileObject(__FILE__);
foreach (
$file as $line_num => $line) {
echo
"Line $line_num is $line";
}
?>

以上示例将输出类似于以下内容

Line 0 is <?php
Line 1 is $file = new SplFileObject(__FILE__);
Line 2 is foreach ($file as $line_num => $line) {
Line 3 is     echo "Line $line_num is $line";
Line 4 is }
Line 5 is ?>

参见

添加备注

用户贡献的备注 1 条备注

0
KEINOS at blog.keinos.com
7 年前
当使用 URL 作为文件名,例如 "http://..." 或 "php://stdin",并且也启用了 fopen 包装器时,如果出现 "RuntimeException" 错误,请尝试将 "NoRewindIterator" 类用于 SplFileObject 实例。

<?php
$url
= 'http://sample.com/data.csv';
$file = new NoRewindIterator( new SplFileObject( $url ) );
foreach (
$file as $line_num => $line) {
echo
"Line $line_num is $line";
}
?>

打开文件时,将调用 rewind 方法,但这些 URL 迭代器无法回绕,因此您将收到 "Fatal error: Uncaught exception 'RuntimeException' with message 'Cannot rewind file ...'" 错误。
To Top