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
也会发生这种情况。可能 related question .和 a Symfony issue从 2011 年开始。
最佳答案
我觉得这是一个错误,所以我提交了错误报告。
https://bugs.php.net/bug.php?id=65213
-- 编辑,大约在 php 5.6.17 左右的某个地方,这个错误似乎已被修复。
关于php - 为什么不能将 SplFileInfo 转换为 bool 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17488674/