Example #1
0
 /**
  * @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;
}