Một trong những hạn chế của PHP là các đối tượng luôn được đánh giá là true
. Tuy nhiên SplFileinfo
(và các lớp con như Symfony của UploadedFile
) hành xử khác nhau:Tại sao SplFileInfo không thể chuyển đổi thành boolean?
$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
Đây có phải là một lỗi? Thử nghiệm trong 5.3 và 5.4. Cũng xảy ra với SplFileObject
. Có thể related question. Và a Symfony issue từ năm 2011.
Và người khác nghĩ đó là tính năng ;-) – Tamlyn