Gregory Beaver wrote:
> Hi Marcus,
>
> FYI, this change:
>
> http://cvs.php.net/viewvc.cgi/php-src/ext/spl/spl_directory.c?view=diff&r1=1.146&r2=1.147
>
> breaks about 20 tests in phar, it's a potentially serious BC break. I
> understand the reasoning behind it, but you may find other users up in
> arms. The main problem is that this line:
>
> flags = SPL_FILE_DIR_KEY_AS_PATHNAME|SPL_FILE_DIR_CURRENT_AS_SELF;
Important correction: the offending line is actually:
flags = 0;
in the previous if() {} block.
>
> returns the DirectoryIterator object as current instead of an
> SplFileInfo as it used to return. If you instead use:
>
> flags = SPL_FILE_DIR_KEY_AS_PATHNAME|SPL_FILE_DIR_CURRENT_AS_FILEINFO;
>
> this will at least keep the current behavior of a SplFileInfo class
> being returned.
>
> Perhaps the better course of action would be to correct the
> documentation rather than the behavior? People upgrading from 5.2.5 to
> 5.2.6 will have a nasty shock if they relied upon the default
> constructor parameters, and even if it is reverted in 5.2.x and kept in
> 5.3.x, the same problem holds.
>
> In other words, the best fix for this is to change the default value of
> $flags in the documentation of the constructor, not to change the
> behavior to match faulty docs. This is especially true since the value
> of the constant CURRENT_AS_FILEINFO was (incorrectly) set to 0 in the
> SPL module startup instead of the expected value - technically, the
> documentation (which says $flags = 0) is really saying $flags =
> CURRENT_AS_FILEINFO|KEY_AS_PATHNAME because it wasn't until this commit
> (http://cvs.php.net/viewvc.cgi/php-src/ext/spl/spl_directory.c?r1=1.146&r2=1.147)
> that you changed those values to non-zero. The fact that the constant
> was changed to the actual expected/documented value does not change the
> fact that it's not a good reason to break BC.
>
> Greg
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php