Hello Gregory,

  hmm, and i thought i was doing it correctly now. So I need to
  reinvestigate things. Thanks fo rthe heads up.

marcus

Monday, February 11, 2008, 6:57:09 AM, you wrote:

> 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




Best regards,
 Marcus

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to