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

SplFileObject::__constructConstruct a new file object


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

Construct a new file object.

Elenco dei parametri


The file to read.


È possibile utilizzare una URL come un nome di file con questa funzione se fopen wrappers è stata abilitata. Vedere fopen() per maggiori informazioni su come specificare i nomi di file. Vedere Supported Protocols and Wrappers per i link verso le informazioni sulle capacità dei vari wrapper, note sul loro uso, informazioni sulle variabili predefinite che forniscono.


The mode in which to open the file. See fopen() for a list of allowed modes.


Whether to search in the include_path for filename.


A valid context resource created with stream_context_create().


Throws a RuntimeException if the filename cannot be opened.

Throws a LogicException if the filename is a directory.


Example #1 SplFileObject::__construct() example

This example opens the current file and iterates over its contents line by line.

= new SplFileObject(__FILE__);
foreach (
$file as $line_num => $line) {
"Line $line_num is $line";

Il precedente esempio visualizzerà qualcosa simile a:

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

Vedere anche:

add a note add a note

User Contributed Notes 2 notes

8 years ago
(PHP >= 5.3) If filename is a directory, a LogicException will be thrown: "Cannot use SplFileObject with directories"
KEINOS at blog.keinos.com
5 years ago
When using URL as a filename, such as "http://..." or "php://stdin", and also have the fopen wappers on, and you get a 'RuntimeException' error, try using "NoRewindIterator" class to a SplFileObject instance.

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

While opening a file, a rewind method will be called, but these URL iterators cannot be rewind, so you'll get a "Fatal error: Uncaught exception 'RuntimeException' with message 'Cannot rewind file ...'" error.
To Top