class styleFinder{
function styleFinder(){
}
function getFilesNFolders($folder){
$this->folder = $folder ;
if($this->folder==""){
$this->folder = '.';
}
if ($handle = opendir($this->folder)) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
echo "$file<br /> ";
if(is_dir($file)){
echo "<b>" . $file . " is a folder</b><br /> with contents ";
$this::getFilesNFolders($file);
# echo "Found folder";
}
}
}
closedir($handle);
}
}
} 我想打印出一个完整的文件夹和文件树,脚本进入第一个文件夹并找到文件,然后找到任何子文件夹,但不是那些子文件夹(是的,有一些)。有什么想法吗?
答案 0 :(得分:7)
$this::getFilesNFolders($file);
应该
$this->getFilesNFolders($file);
答案 1 :(得分:6)
自PHP 5.1.2起,您就可以使用这个有用的类:http://www.php.net/manual/en/class.recursivedirectoryiterator.php
答案 2 :(得分:2)
访问类函数是这样的:
$this->functionName():
答案 3 :(得分:1)
由于还没有人提供,所以这里是代码的RecursiveDirectoryIterator
版本:
$iterator = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator('/path/to/directory'),
RecursiveIteratorIterator::SELF_FIRST);
foreach($iterator as $fileObject) {
if($fileObject->isDir()) {
echo "<strong>$fileObject is a folder:</strong><br>\n";
} else {
echo $fileObject, "<br>\n";
}
}
答案 4 :(得分:0)
正如其他人所说,在方法本身中,您需要使用$this -> getFilesNFolders($file)
调用getFilesNFolders。此外,代码发布的方式你最后错过了一个},但由于有一个代码在代码后面开始,这可能是一个错字。下面的代码对我有效(我通过命令行运行,因此添加了代码以缩进不同的目录级别并输出\ n):
<?php
class StyleFinder{
function StyleFinder(){
}
function getFilesNFolders($folder, $spaces){
$this->folder = $folder ;
if($this->folder==""){
$this->folder = '.';
}
if ($handle = opendir($this->folder)) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
if(is_dir($file)){
echo $spaces . "<b>" . $file . " is a folder</b><br/> with contents:\n";
$this -> getFilesNFolders($file, $spaces . " ");
} else {
echo $spaces . "$file<br />\n";
}
}
}
closedir($handle);
}
}
}
$sf = new StyleFinder();
$sf -> getFilesNFolders(".", "");
?>