本帖最后由 xuzuning 于 2011-07-27 12:03:37 编辑

解决方案 »

  1.   

    这个提示是你的php方法里输出的吧??可以使用glob 去遍历
    foreach (glob("*.php") as $filename) {
        echo "$filename size " . filesize($filename) . "\n";
    }
    //修改下为递归就行了。
      

  2.   

    回楼上的,错误提示不是我的程序里边输出的,是在php命令行下运行程序时php给出的错误。我把递归部分改为如下代码,还是有错误.有没有人对递归改为非递归有经验,求教~~
      

  3.   

      private function searchClass($parentPath, $is_child=false){
            $fd=opendir($parentPath);
            while($path=readdir($fd)){
                if(!in_array($path,$this->opsName) && $is_child==false){
                        continue;
                }
                if(is_dir($parentPath.$path)){
                    $fd=opendir($parentPath.$path.'/');
                    $is_child=true;
                    continue;
                }else{
                    if(!isset($this->classPath[substr($path,0,strpos($path,'.'))]) && substr($path, -4)=='.php'){
                        echo $parentPath."\r\n";
                        $relative_path = str_replace($this->root.'/',"\"",$parentPath);
                        $this->classPath[substr($path,0,strpos($path,'.'))] = $relative_path.$path."\"";
                    }else{
                        //echo "发现重复:".$parentPath.$path."<hr>\n";
                    }
                }
            }
    }
      

  4.   

    因为你没有过滤.和..
    造成目录反复搜索while循环里加上
    if($path == '.' || $path == '..') continue;