PHP 的限制之一是对象总是计算为true
. 但是SplFileinfo
(以及 Symfony 等子类UploadedFile
)的行为不同:
$a = new ArrayIterator(); // or any other class
$b = new SplFileInfo(__FILE__); // file used is not important
if ($a) echo 'true'; // 'true'
if (!$a) echo 'false'; // nothing because $a is true
if ($b) echo 'true'; // 'true'
if (!$b) echo 'false'; // Catchable fatal error: Object of class
// SplFileInfo could not be converted to boolean
这是一个错误吗?在 5.3 和 5.4 中测试。也发生在SplFileObject
. 可能的相关问题。还有一个 2011 年的 Symfony 问题。