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
4 年前
使用此方法时要小心,因为它的功能与直接实例化扩展类并不完全相同。如果您使用类型提示或 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