- MFH Fix issue with RecursiveArrayIterator::getChildren()

This commit is contained in:
Marcus Boerger 2005-10-03 09:14:30 +00:00
parent 594fd87ca7
commit 184309c2e9
3 changed files with 9 additions and 6 deletions

View File

@ -62,11 +62,6 @@ class SubClasses extends RecursiveArrayIterator
}
}
function getChildren()
{
return parent::current();
}
function current()
{
return parent::key();

View File

@ -13,7 +13,7 @@
* @brief A recursive array iterator
* @author Marcus Boerger
* @version 1.0
* @since PHP 6.0
* @since PHP 5.1
*
* Passes the RecursiveIterator interface to the inner Iterator and provides
* the same functionality as FilterIterator. This allows you to skip parents
@ -42,6 +42,10 @@ class RecursiveArrayIterator extends ArrayIterator implements RecursiveIterator
*/
function getChildren()
{
if ($this->current() instanceof self)
{
return $this->current();
}
if (empty($this->ref))
{
$this->ref = new ReflectionClass($this);

View File

@ -1186,6 +1186,10 @@ SPL_METHOD(Array, getChildren)
if (zend_hash_get_current_data_ex(aht, (void **) &entry, &intern->pos) == FAILURE) {
return;
}
if (Z_TYPE_PP(entry) == IS_OBJECT && instanceof_function(Z_OBJCE_PP(entry), Z_OBJCE_P(getThis()) TSRMLS_CC)) {
RETURN_ZVAL(*entry, 0, 0);
}
spl_instantiate_arg_ex1(Z_OBJCE_P(getThis()), &return_value, 0, *entry TSRMLS_CC);
}