Doc->Bug #66405 [Asn->Opn]: RecursiveDirectoryIterator::CURRENT_AS_PATHNAME breaks the RecursiveIterator

From: Date: Fri, 03 Jan 2014 18:47:36 +0000
Subject: Doc->Bug #66405 [Asn->Opn]: RecursiveDirectoryIterator::CURRENT_AS_PATHNAME breaks the RecursiveIterator
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-183570@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=66405&edit=1 ID: 66405 User updated by: stof at notk dot org Reported by: stof at notk dot org Summary: RecursiveDirectoryIterator::CURRENT_AS_PATHNAME breaks the RecursiveIterator -Status: Assigned +Status: Open -Type: Documentation Problem +Type: Bug Package: SPL related PHP Version: 5.5.7 Assigned To: salathe Block user comment: N Private report: N New Comment: But this is exactly what I'm reporting. The implementation of RecursiveDirectoryIterator is wrong in the SPL when you ask to return the pathname for the current item. It should not change the return value of getChildren to a string. It is not a documentation problem (well, there may be a need to clarify the RecursiveIterator doc, but this is a different topic). Previous Comments: ------------------------------------------------------------------------ [2014-01-03 18:30:18] requinix@php.net This is expected behavior: the inner Iterator's getChildren() must return something that is, itself, a RecursiveIterator, otherwise the whole idea of recursive iteration is impossible. But I don't see that spelled out in the documentation so I'm changing this to a doc bug. ------------------------------------------------------------------------ [2014-01-03 17:04:32] stof at notk dot org Description: ------------ When using the RecursiveDirectoryIterator::CURRENT_AS_PATHNAME flag of the RecursiveDirectoryIterator, the iterator does not implement RecursiveIterator properly anymore Test script: --------------- <?php $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator(__DIR__, RecursiveDirectoryIterator::CURRENT_AS_PATHNAME)); var_dump(iterator_to_array($iterator)); Expected result: ---------------- The list of of files in the current folder (including subfolders) is dumped Actual result: -------------- UnexpectedValueException: Objects returned by RecursiveIterator::getChildren() must implement RecursiveIterator ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=66405&edit=1

« previous php.bugs (#183570) next »