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