ConFoo 2025

SplFileInfo::setInfoClass

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

SplFileInfo::setInfoClassEstablece la clase empleada con SplFileInfo::getFileInfo() y SplFileInfo::getPathInfo()

Descripción

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

Este método se emplea para establecer una clase propia que será utilizada cuando se invoque a SplFileInfo::getFileInfo() y SplFileInfo::getPathInfo(). El nombre de la clase pasado a este método debe ser SplFileInfo o una clase derivada de SplFileInfo.

Parámetros

class

El nombre de la clase a emplear cuando se invoca a SplFileInfo::getFileInfo() y SplFileInfo::getPathInfo().

Valores devueltos

No devuelve ningún valor.

Ejemplos

Ejemplo #1 Ejemplo de SplFileInfo::setFileClass()

<?php
// Crear una clase que extiende a SplFileInfo
class MiFoo extends SplFileInfo {}

$info = new SplFileInfo('foo');
// Establecer el nombre de clase a usar
$info->setInfoClass('MiFoo');
var_dump($info->getFileInfo());
?>

El resultado del ejemplo sería algo similar a:

object(MiFoo)#2 (0) { }

Ver también

add a note

User Contributed Notes 1 note

up
-1
Eugene Kunkel
5 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