php - 为什么不能将 SplFileInfo 转换为 bool 值?

标签 php spl truthiness

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/

相关文章:

javascript - TypeScript 中以下条件有什么区别?

ruby - 在 ruby​​ 中,以问号结尾的方法名称是否符合真实性?

php - 在 Laravel 中发送没有 `to` 方法的邮件

php - 如何从目录迭代器循环中排除文件类型

python - python对象的真假标准是什么?

php - 如何使用 SPL 检索完整的目录树?

php - PHP 5.x是否具有某种HashSet或Set类?

php - 与 mvc/oop 相比,Spaghetti php 代码的性能和可扩展性?

php - preg_replace : add number after backreference

php - 在 Laravel 中查询集合