123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- --TEST--
- SPL: SimpleXMLIterator and overridden iterator methods()
- --EXTENSIONS--
- simplexml
- libxml
- --FILE--
- <?php
- $xml =<<<EOF
- <?xml version='1.0'?>
- <!DOCTYPE sxe SYSTEM "notfound.dtd">
- <sxe id="elem1">
- Plain text.
- <elem1 attr1='first'>
- Bla bla 1.
- <!-- comment -->
- <elem2>
- Here we have some text data.
- <elem3>
- And here some more.
- <elem4>
- Wow once again.
- </elem4>
- </elem3>
- </elem2>
- </elem1>
- <elem11 attr2='second'>
- Bla bla 2.
- <elem111>
- Foo Bar
- </elem111>
- </elem11>
- </sxe>
- EOF;
- class SXETest extends SimpleXMLIterator
- {
- function rewind(): void
- {
- echo __METHOD__ . "\n";
- parent::rewind();
- }
- function valid(): bool
- {
- echo __METHOD__ . "\n";
- return parent::valid();
- }
- function current(): SimpleXMLElement
- {
- echo __METHOD__ . "\n";
- return parent::current();
- }
- function key(): string
- {
- echo __METHOD__ . "\n";
- return parent::key();
- }
- function next(): void
- {
- echo __METHOD__ . "\n";
- parent::next();
- }
- function hasChildren(): bool
- {
- echo __METHOD__ . "\n";
- return parent::hasChildren();
- }
- function getChildren(): ?SimpleXMLIterator
- {
- echo __METHOD__ . "\n";
- return parent::getChildren();
- }
- }
- $sxe = new SXETest($xml);
- $rit = new RecursiveIteratorIterator($sxe, RecursiveIteratorIterator::SELF_FIRST);
- foreach($rit as $data) {
- var_dump(get_class($data));
- var_dump(trim($data));
- }
- ?>
- --EXPECT--
- SXETest::rewind
- SXETest::valid
- SXETest::hasChildren
- SXETest::valid
- SXETest::current
- string(7) "SXETest"
- string(10) "Bla bla 1."
- SXETest::getChildren
- SXETest::rewind
- SXETest::valid
- SXETest::hasChildren
- SXETest::valid
- SXETest::current
- string(7) "SXETest"
- string(28) "Here we have some text data."
- SXETest::getChildren
- SXETest::rewind
- SXETest::valid
- SXETest::hasChildren
- SXETest::valid
- SXETest::current
- string(7) "SXETest"
- string(19) "And here some more."
- SXETest::getChildren
- SXETest::rewind
- SXETest::valid
- SXETest::hasChildren
- SXETest::valid
- SXETest::current
- string(7) "SXETest"
- string(15) "Wow once again."
- SXETest::next
- SXETest::valid
- SXETest::next
- SXETest::valid
- SXETest::next
- SXETest::valid
- SXETest::next
- SXETest::valid
- SXETest::hasChildren
- SXETest::valid
- SXETest::current
- string(7) "SXETest"
- string(10) "Bla bla 2."
- SXETest::getChildren
- SXETest::rewind
- SXETest::valid
- SXETest::hasChildren
- SXETest::valid
- SXETest::current
- string(7) "SXETest"
- string(7) "Foo Bar"
- SXETest::next
- SXETest::valid
- SXETest::next
- SXETest::valid
- SXETest::valid
|