使用這個方法時要小心,因為其功能與直接實例化繼承的類別並不完全相同。如果您使用類型提示或 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)