PHP文件遍历类的实现

代码实现

traveldir.class.php

//filename:traveldir.class.php
//author:ResearchWorld
<?php
class TravelDir{
    private $path = '/';
    private $dir_handle = null;
    
    public function travel($path='/',$is_deep=false){
        $this->path = $path;
        
        if ($dir_handle = $this->getDirHandle() ){
            $this->dir_handle = $dir_handle;
            
            echo '<table>';
            echo '<tr>';
            echo '<td>'.'文件名'.'</td>';
            echo '<td>'.'文件类型'.'</td>';
            echo '</tr>';
            while( $file_name = readdir($dir_handle)){
                $is_ignore = $file_name === '.' || $file_name === '..' ? true : false;
                
                if(strrchr($path,'/') != strlen($path)-1 ){
                    $path .= '/';
                }
                    
                $file_type = @filetype($path.$file_name);
                echo '<tr>';
                echo '<td>'.$file_name.'</td>';
                echo '<td>'.$file_type.'</td>';
                echo '</tr>';
                if($is_deep && $file_type==='dir' && !$is_ignore){
                    echo '<tr>';
                    echo '<td>';
                    echo "<ul stype='padding:0px 5px'>";
                    echo "<li style='list-style:none;'>";
                    $this->travel($path.$file_name,$is_deep);
                    echo '</li>';
                    echo '</ul>';
                    echo '</td>';
                    echo '</tr>';
                }   
            }
            echo '</table>';
        }
    }
    
    private function getDirHandle(){
        $path = $this->path;
        
        if(is_dir($path)){
            $dir_handle = @opendir($path);
            if(!$dir_handle){
                return false;
            }   
            return $dir_handle;//其实这里保留这句就可以了,上面多写了.                
        }
        
        return false;
    }
    
    public function __destruct(){
        if(!empty($dir_handle))
            closedir($dir_hanle);
    }
    
}

index.php

<?php
header('Content-type: text/html; charset=utf-8');
function __autoload($class_name){
    $class_name =strtolower($class_name);
    $class_file_name = $class_name.'.class'.'.php';
    
    if(file_exists("./${class_file_name}")){
        include_once $class_file_name;
    }
}

$traveldir = new TravelDir;

$traveldir->travel('../mysql_save_file',true);

效果展示
目录太复杂的没敢测试

show.png

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,136评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,084评论 19 139
  • 什么是合格的员工? 1 要有强健的体质身体时健康的。2 要有素质,专业技术再好没素质都是白搭。3工作期间不能迟到早...
    微笑你我他阅读 1,225评论 0 2
  • 学完了声母,今天尝试带小朋友用拼音写句子。小朋友说了一个词语:西瓜,我们就用西瓜来造句。 一个说:西瓜大又大;一个...
    曾子玲阅读 4,332评论 0 0
  • 仍然清晰的记得那是一个燥热夏天的午后,我穿着黑色的短袖T恤蹬着自行车,大汗淋漓的骑到校门口。看着那些衣着光鲜的学生...
    卸载格式化阅读 1,639评论 0 2

友情链接更多精彩内容