(PHP 5 >= 5.1.2, PHP 7, PHP 8)
SplFileInfo::setInfoClass — Задаёт имя класса, объекты которого будут создаваться методами SplFileInfo::getFileInfo() и SplFileInfo::getPathInfo()
Задаёт имя класса, объекты которого будут создаваться при вызове методов SplFileInfo::getFileInfo() и SplFileInfo::getPathInfo() . Класс должен быть SplFileInfo или классом, производным от SplFileInfo .
classИмя класса, который будет использоваться при вызове 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) { }
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)