フォルダツリーを表示しようとしています。その動作はすべて良好です。以下はコードです。
$fileData = fillArrayWithFileNodes( new DirectoryIterator( $dir ) );
function fillArrayWithFileNodes( DirectoryIterator $dir )
{
$data = array();
foreach ( $dir as $node )
{
if ( $node->isDir() && !$node->isDot() )
{
$data[$node->getFilename()] = fillArrayWithFileNodes( new DirectoryIterator( $node->getPathname() ) );
}
else if ( $node->isFile() )
{
$data[] = $node->getFilename();
}
}
return $data;
}
しかし、私には新しい要件があります。このように使用できるように、クラスに入れたいと思います。
$tree = new folderTree();
$structure = $tree->display('testdir',2); //2 is the level of subfolders
だから私は以下の方法ですべてをクラスにラップしました。
class folderTree {
function display($dir,$level='') {
$fileData = fillArrayWithFileNodes( new DirectoryIterator( $dir ) );
function fillArrayWithFileNodes( DirectoryIterator $dir )
{
$data = array();
foreach ( $dir as $node )
{
if ( $node->isDir() && !$node->isDot() )
{
$data[$node->getFilename()] = fillArrayWithFileNodes( new DirectoryIterator( $node->getPathname() ) );
}
else if ( $node->isFile() )
{
$data[] = $node->getFilename();
}
}
return $data;
}
}
}
しかし、私はレベルの使い方に本当に行き詰まっています。
レベルとは?
-folder
-childfolder (level1)
file1
file2
-subchildfolder (level2)
file1
file2