PHP Conference Japan 2024

SplFileInfo::setInfoClass

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

SplFileInfo::setInfoClass设置与 SplFileInfo::getFileInfo()SplFileInfo::getPathInfo() 一起使用的类

描述

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

使用此方法设置自定义类,该类将在调用 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) { }

参见

添加注释

用户贡献的注释 1 条注释

-1
Eugene Kunkel
5 年前
使用此方法时要小心,因为其功能与直接实例化扩展类并不完全相同。如果您使用类型提示或 instanceof 检查,这可能会让您感到困惑。

<?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>";

?>

输出

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