PHPKonf 2020 Online

SplFileInfo::setInfoClass

(PHP 5 >= 5.1.2, PHP 7)

SplFileInfo::setInfoClass Задает имя класса, объекты которого будут создаваться методами SplFileInfo::getFileInfo() и SplFileInfo::getPathInfo()

Описание

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

Задает имя класса, объекты которого будут создаваться при вызове методов SplFileInfo::getFileInfo() и SplFileInfo::getPathInfo(). Класс должен быть SplFileInfo или классом, производным от SplFileInfo.

Список параметров

class_name

Имя класса, который будет использоваться при вызове SplFileInfo::getFileInfo() и SplFileInfo::getPathInfo().

Возвращаемые значения

Эта функция не возвращает значения после выполнения.

Примеры

Пример #1 Пример использования SplFileInfo::setFileClass()

<?php
// Определить класс, который расширяет SplFileInfo
class MyFoo extends SplFileInfo {}

$info = new SplFileInfo('foo');
// Установить имя класса для использования
$info->setInfoClass('MyFoo');
var_dump($info->getFileInfo());
?>

Результатом выполнения данного примера будет что-то подобное:

object(MyFoo)#2 (0) { } 

Смотрите также

add a note add a note

User Contributed Notes 1 note

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