Re: Conversion of SplFileInfo instances to boolean
| From: | Christoph Becker | Date: | Wed, 03 Dec 2014 22:09:45 +0000 |
| Subject: | Re: Conversion of SplFileInfo instances to boolean | ||
| References: | 1 2 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-79404@lists.php.net to get a copy of this message | ||
Peter Cowburn wrote:
> On 3 December 2014 at 20:35, Christoph Becker <cmbecker69@gmx.de> wrote:
>
>> Hello internals,
>>
>> today I stumbled over issue #65213[1] which has been reported as a bug,
>> but was changed to a feature request without any hint why the conversion
>> of SplFileInfo instances to boolean throws a catchable fatal error.
>>
>> Even worse, due to optimizations in OPcache (and maybe other optimizers
>> as well), this does not always happen. Consider the following snippet:
>>
>> <?php
>>
>> $o = new SplFileObject('.');
>> if (!$o) {
>> } else {
>> var_dump(!$o);
>> }
>>
>> Without any optimization this throws the error in line 4 (the if
>> clause); with OPcache the error is thrown in line 6. Apparently that is
>> caused by a optimization where BOOL_NOT,JMPZ is converted to NOP,JMPNZ[2].
>>
>> IOW: with OPcache enabled
if (!$o) works fine, but without
>> OPcache it
>> is an error. IMHO both should behave identically.
>>
>> [1] <https://bugs.php.net/bug.php?id=65213>
>>
>
> This looks fixed in master (https://github.com/php/php-src/commit/8904f72
>
> <https://github.com/php/php-src/commit/8904f72d7c47253345f7039afd8ca754442c7e34>
> ).
Indeed, thanks. <http://3v4l.org/1fHVC> confirms that.
However, if the
former behavior is regarded as a bug, shouldn't it be fixed for PHP 5.5
and PHP 5.6 as well?
Anyhow, the bug report/feature request might be closed.
--
Christoph M. Becker