SplFileInfo::setInfoClass

(PHP 5 >= 5.1.2, PHP 7)

SplFileInfo::setInfoClassConfigure la classe utilisée par SplFileInfo::getFileInfo() et SplFileInfo::getPathInfo()

Description

public SplFileInfo::setInfoClass ([ string $class_name = "SplFileInfo" ] ) : void

Utilisez cette méthode pour configurer une classe personnalisée à utiliser avec les méthodes getFileInfo() et getPathInfo(). La classe utilisée doit hériter de SplFileInfo.

Liste de paramètres

class_name

Le nom de la classe à utiliser.

Valeurs de retour

Aucune valeur n'est retournée.

Exemples

Exemple #1 Exemple avec SplFileInfo::setFileClass()

<?php
// Define a class which extends SplFileInfo
class MyFoo extends SplFileInfo {}

$info = new SplFileInfo('foo');
// Configure la classe à utiliser
$info->setInfoClass('MyFoo');
var_dump($info->getFileInfo());
?>

L'exemple ci-dessus va afficher quelque chose de similaire à :

object(MyFoo)#2 (0) { } 

Voir aussi

add a note add a note

User Contributed Notes 1 note

up
0
Eugene Kunkel
3 months 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