mirror of
https://github.com/php/php-src.git
synced 2024-11-29 04:46:07 +08:00
d71b3de7f4
- [DOC] ArrayIterator::CHILD_ARRAYS_ONLY, ArrayObject::CHILD_ARRAYS_ONLY Passing this flag in the ctor prevents ArrayIterator from following objects in ArrayObject::getIterator(), ArrayIterator::hasChildren(), ArrayIterator::getChildren(). The exact behavior might change: - should the flag be set by default - should the flag be changed to have a negative effect
106 lines
1.7 KiB
PHP
106 lines
1.7 KiB
PHP
--TEST--
|
|
Bug #38618 (RecursiveArrayIterator::hasChildren() follows objects)
|
|
--FILE--
|
|
<?php # vim:ft=php
|
|
|
|
class FruitPublic
|
|
{
|
|
public $title;
|
|
|
|
public function __construct($title)
|
|
{
|
|
$this->title = $title;
|
|
}
|
|
|
|
public function __toString()
|
|
{
|
|
return $this->title;
|
|
}
|
|
}
|
|
|
|
class FruitProtected
|
|
{
|
|
protected $title;
|
|
|
|
public function __construct($title)
|
|
{
|
|
$this->title = $title;
|
|
}
|
|
|
|
public function __toString()
|
|
{
|
|
return $this->title;
|
|
}
|
|
}
|
|
|
|
function test_array($array, $which, $flags = 0)
|
|
{
|
|
echo "===$which===\n";
|
|
$it = new RecursiveArrayIterator($array, $flags);
|
|
foreach (new RecursiveIteratorIterator($it) as $k => $fruit) {
|
|
echo $k , ' => ', $fruit, "\n";
|
|
}
|
|
}
|
|
|
|
$array = array(
|
|
1 => array(
|
|
1 => array(
|
|
1 => 'apple',
|
|
),
|
|
2 => array(
|
|
1 => 'grape',
|
|
),
|
|
),
|
|
);
|
|
|
|
test_array($array, 'Default with array');
|
|
|
|
$array = array(
|
|
1 => array(
|
|
1 => array(
|
|
1 => new FruitPublic('apple'),
|
|
),
|
|
2 => array(
|
|
1 => new FruitPublic('grape'),
|
|
),
|
|
),
|
|
);
|
|
|
|
test_array($array, 'Public Property');
|
|
|
|
$array = array(
|
|
1 => array(
|
|
1 => array(
|
|
1 => new FruitProtected('apple'),
|
|
),
|
|
2 => array(
|
|
1 => new FruitProtected('grape'),
|
|
),
|
|
),
|
|
);
|
|
|
|
test_array($array, 'Protected Property');
|
|
|
|
test_array($array, 'Public Property New', ArrayIterator::CHILD_ARRAYS_ONLY);
|
|
test_array($array, 'Protected Property New', ArrayIterator::CHILD_ARRAYS_ONLY);
|
|
?>
|
|
===DONE===
|
|
<?php exit(0); ?>
|
|
?>
|
|
===DONE===
|
|
--EXPECTF--
|
|
===Default with array===
|
|
1 => apple
|
|
1 => grape
|
|
===Public Property===
|
|
title => apple
|
|
title => grape
|
|
===Protected Property===
|
|
===Public Property New===
|
|
1 => apple
|
|
1 => grape
|
|
===Protected Property New===
|
|
1 => apple
|
|
1 => grape
|
|
===DONE===
|