PHP 8.4.0 RC4 available for testing

SplFileInfo::setInfoClass

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

SplFileInfo::setInfoClassSets the class used with SplFileInfo::getFileInfo() and SplFileInfo::getPathInfo()

Açıklama

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

Use this method to set a custom class which will be used when SplFileInfo::getFileInfo() and SplFileInfo::getPathInfo() are called. The class name passed to this method must be SplFileInfo or a class derived from SplFileInfo.

Bağımsız Değişkenler

class

The class name to use when SplFileInfo::getFileInfo() and SplFileInfo::getPathInfo() are called.

Dönen Değerler

Hiçbir değer dönmez.

Örnekler

Örnek 1 SplFileInfo::setFileClass() example

<?php
// Define a class which extends SplFileInfo
class MyFoo extends SplFileInfo {}

$info = new SplFileInfo('foo');
// Set the class name to use
$info->setInfoClass('MyFoo');
var_dump($info->getFileInfo());
?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

object(MyFoo)#2 (0) { }

Ayrıca Bakınız

add a note

User Contributed Notes 1 note

up
-1
Eugene Kunkel
5 years ago
Be careful when using this method, as the functionality isn't exactly the same as instantiating the extending class directly. This can really trip you up if you're using type hints or instanceof checks.

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

?>

Outputs:

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