International PHP Conference Berlin 2021

SplFileObject::__construct

(PHP 5 >= 5.1.0, PHP 7)

SplFileObject::__constructСоздаёт объект SplFileObject

Описание

public SplFileObject::__construct ( string $filename , string $open_mode = "r" , bool $use_include_path = false , resource $context = ? )

Создаёт новый файловый объект.

Список параметров

filename

Файл, который требуется прочитать.

Подсказка

Для этой функции вы можете использовать URL в качестве имени файла, если была включена опция fopen wrappers. Смотрите более подробную информацию об определении имени файла в описании функции fopen(). Смотрите также список поддерживаемых обёрток URL, их возможности, замечания по использованию и список предопределённых констант в разделе Поддерживаемые протоколы и обёртки.

open_mode

Режим работы с файлом. Список возможных режимов работы приведён в описании функции fopen().

use_include_path

Требуется ли просматривать include_path во время поиска файла filename.

context

Допустимый ресурс контекста, созданный функцией stream_context_create().

Возвращаемые значения

Эта функция не возвращает значения после выполнения.

Ошибки

Выбрасывает исключение RuntimeException, если файл filename невозможно открыть.

Выбрасывает исключение LogicException, если filename является каталогом.

Примеры

Пример #1 Пример использования SplFileObject::__construct()

Этот пример открывает текущий файл и осуществляет перебор его строк.

<?php
$file 
= new SplFileObject(__FILE__);
foreach (
$file as $line_num => $line) {
    echo 
"Строка $line_num$line";
}
?>

Результатом выполнения данного примера будет что-то подобное:

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

Смотрите также

add a note add a note

User Contributed Notes 2 notes

up
1
KEINOS at blog.keinos.com
3 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.

<?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";
}
?>

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.
up
-1
majna
6 years ago
(PHP >= 5.3) If filename is a directory, a LogicException will be thrown: "Cannot use SplFileObject with directories"
To Top