(PHP >= 5.3) If filename is a directory, a LogicException will be thrown: "Cannot use SplFileObject with directories"
(PHP 5 >= 5.1.0, PHP 7, PHP 8)
SplFileObject::__construct — Создаёт объект SplFileObject
$filename
,$mode
= "r",$useIncludePath
= false
,$context
= null
Создаёт новый файловый объект.
filename
Файл, который требуется прочитать.
Для этой функции вы можете использовать URL в качестве имени файла, если была включена опция fopen wrappers. Смотрите более подробную информацию об определении имени файла в описании функции fopen(). Смотрите также список поддерживаемых обёрток URL, их возможности, замечания по использованию и список предопределённых констант в разделе Поддерживаемые протоколы и обёртки.
mode
Режим работы с файлом. Список возможных режимов работы приведён в описании функции fopen().
useIncludePath
Требуется ли просматривать 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: ?>
(PHP >= 5.3) If filename is a directory, a LogicException will be thrown: "Cannot use SplFileObject with directories"
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.