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 ?>

参见

添加说明

用户贡献说明 2 个说明

0
KEINOS at blog.keinos.com
7 年前
当使用 URL 作为文件名时,例如 "http://..." 或 "php://stdin",并且还打开了 fopen wappers,并且您收到“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 ...'”错误。
-5
majna
9 年前
(PHP >= 5.3) 如果 filename 是一个目录,则会抛出 LogicException:“无法将 SplFileObject 与目录一起使用”。
To Top