(PHP 5 >= 5.1.0, PHP 7, PHP 8)
SplFileObject::__construct — Создаёт объект SplFileObject
$filename,$mode = "r",$useIncludePath = false ,$context = null Создаёт новый файловый объект.
filenameФайл, который требуется прочитать.
Вместо названий файлов функция принимает URL-адреса, если включили директиву fopen wrappers. Подробнее об определении названия файла рассказывает описание функции fopen() . Раздел «Протоколы и обёртки» также даёт ссылки на информацию о поддерживаемых обёртках, содержит замечания по работе с обёртками и приводит список предопределённых переменных, которые они дают.
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: ?>
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.