/** * @param string $directory */ public static function getRecursiveTree($directory) { $treeIterator = new \RecursiveTreeIterator(new \RecursiveDirectoryIterator($directory, \FilesystemIterator::SKIP_DOTS)); $treeIterator->setPrefixPart(\RecursiveTreeIterator::PREFIX_MID_HAS_NEXT, '| '); $treeIterator->setPrefixPart(\RecursiveTreeIterator::PREFIX_END_HAS_NEXT, '|--'); $treeIterator->setPrefixPart(\RecursiveTreeIterator::PREFIX_END_LAST, '`--'); $files = array(); foreach ($treeIterator as $file) { $foo = explode(DIRECTORY_SEPARATOR, $file); $file = array_shift($foo) . ' ' . array_pop($foo); $files[] = $file; } return \implode(PHP_EOL, $files); }
<?php $ary = array("a" => array("b"), "c" => array("d")); $it = new RecursiveArrayIterator($ary); $it = new RecursiveTreeIterator($it); for ($i = 0; $i < 6; ++$i) { $it->setPrefixPart($i, $i); } foreach ($it as $k => $v) { echo "[{$k}] => {$v}\n"; } try { $it->setPrefixPart(-1, ""); $it->setPrefixPart(6, ""); } catch (OutOfRangeException $e) { echo "OutOfRangeException thrown\n"; } try { $it->setPrefixPart(6, ""); } catch (OutOfRangeException $e) { echo "OutOfRangeException thrown\n"; } ?> ===DONE===
<?php $arr = array("a" => array("b")); $it = new RecursiveArrayIterator($arr); $it = new RecursiveTreeIterator($it); $it->setPrefixPart(1); // Should throw a warning as setPrefixPart expects 2 arguments $a = new stdClass(); $it->setPrefixPart($a, 1); // Should throw a warning as setPrefixPart expects argument 1 to be long integer $it->setPrefixPart(1, $a); // Should throw a warning as setPrefixPart expects argument 2 to be a string ?> ===DONE===
<?php $rait = new RecursiveArrayIterator([0, 1, [2, 3]]); $rtit = new RecursiveTreeIterator($rait); try { $rtit->setPrefixPart(6, ""); } catch (OutOfRangeException $e) { echo $e->getMessage(), PHP_EOL; }