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