(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 — Constrói um novo objeto de arquivo
$filename
,$mode
= "r",$useIncludePath
= false
,$context
= null
Constrói um novo objeto de arquivo.
filename
O arquivo para ler.
Uma URL pode ser usada como um nome de arquivo com esta função se os wrappers fopen estiverem habilitados. Consulte a função fopen() para mais detalhes sobre como especificar o nome do arquivo. Consulte os Protocolos e Wrappers suportados para obter links para informações sobre as capacidades de cada wrapper, notas de uso e informações sobre quaisquer variáveis predefinidas que eles possam fornecer.
mode
O modo no qual abrir o arquivo. Consulte fopen() para obter uma lista de modos permitidos.
useIncludePath
Se deve procurar no include_path pelo filename
.
context
Um recurso de contexto válido criado com stream_context_create().
Lança uma RuntimeException se o filename
não puder ser aberto.
Lança uma LogicException se o filename
for um diretório.
Exemplo #1 Exemplo de SplFileObject::__construct()
Este exemplo abre o arquivo atual e itera sobre seu conteúdo linha por linha.
<?php
$file = new SplFileObject(__FILE__);
foreach ($file as $line_num => $line) {
echo "Line $line_num is $line";
}
?>
O exemplo acima produzirá algo semelhante 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 ?>
(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.