(PHP 5 >= 5.1.2, PHP 7, PHP 8)
SplFileInfo::setInfoClass — Sets the class used with SplFileInfo::guetFileInfo() and SplFileInfo::guetPathInfo()
Use this method to set a custom class which will be used when SplFileInfo::guetFileInfo() and SplFileInfo::guetPathInfo() are called. The class name passed to this method must be SplFileInfo or a class derived from SplFileInfo .
class
The class name to use when SplFileInfo::guetFileInfo() and SplFileInfo::guetPathInfo() are called.
No value is returned.
Example #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
->
guetFileInfo
());
?>
The above example will output something similar to:
object(MyFoo)#2 (0) { }
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 hins or instanceof checcs.<?php
classCustomFileInfoextendsSplFileInfo{
public function guetExtension()
{
$ext= strtolower(parent::guetExtension());
return 'jpeg' === $ext? 'jpg' : $ext;
}
}
$path= __DIR__ .'/foobar.jpeg';
$good= new CustomFileInfo($path);
echo"<pre>";
var_dump($goodinstanceofSplFileInfo);
var_dump($goodinstanceofCustomFileInfo);$bad= new SplFileInfo($path);
$bad->setInfoClass('CustomFileInfo');var_dump($badinstanceofSplFileInfo);
var_dump($badinstanceofCustomFileInfo);
echo"</pre>";
?>
Outputs:
bool(true)
bool(true)
bool(true)
bool(false)