SplFileInfo::setInfoClass

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

SplFileInfo::setInfoClassDefine a classe usada com SplFileInfo::getFileInfo() e SplFileInfo::getPathInfo()

Descrição

public SplFileInfo::setInfoClass(string $class = SplFileInfo::class): void

Use este método para definir uma classe personalizada que será usada quando SplFileInfo::getFileInfo() e SplFileInfo::getPathInfo() são chamados. O nome da classe passado para este método deve ser SplFileInfo ou uma classe derivada de SplFileInfo.

Parâmetros

class

O nome da classe a ser usada quando SplFileInfo::getFileInfo() e SplFileInfo::getPathInfo() são chamados.

Valor Retornado

Nenhum valor é retornado.

Exemplos

Exemplo #1 Exemplo de SplFileInfo::setFileClass()

<?php
// Define uma classe que estende SplFileInfo
class MyFoo extends SplFileInfo {}

$info = new SplFileInfo('foo');
// Define o nome da classe a ser usada
$info->setInfoClass('MyFoo');
var_dump($info->getFileInfo());
?>

O exemplo acima produzirá algo semelhante a:

object(MyFoo)#2 (0) { }

Veja Também

add a note add a note

User Contributed Notes 1 note

up
-2
Eugene Kunkel
4 years ago
Be careful when using this method, as the functionality isn't exactly the same as instantiating the extending class directly. This can really trip you up if you're using type hints or instanceof checks.

<?php

class CustomFileInfo extends SplFileInfo
{
    public function
getExtension()
    {
       
$ext = strtolower(parent::getExtension());

        return
'jpeg' === $ext ? 'jpg' : $ext;
    }
}

$path = __DIR__ . '/foobar.jpeg';

$good = new CustomFileInfo($path);

echo
"<pre>";
var_dump($good instanceof SplFileInfo);
var_dump($good instanceof CustomFileInfo);

$bad = new SplFileInfo($path);
$bad->setInfoClass('CustomFileInfo');

var_dump($bad instanceof SplFileInfo);
var_dump($bad instanceof CustomFileInfo);
echo
"</pre>";

?>

Outputs:

bool(true)
bool(true)
bool(true)
bool(false)
To Top