织梦删除指定目录的所有文件函数RmDirFile($indir)分析

admin2020-02-13876

如果我们在后台删除某个栏目的话,只能把数据库表里面的栏目相关信息删除,但是,静态网页是删除不掉的,如果想彻底把静态网页一起删除掉,那么,需要进行织梦二次开发,可以使用这个函数来实现。

函数介绍:

函数:RmDirFile($indir)

参数:$indir指定要删除的栏目

返回值:布尔型

所在文件:include/typeunit.class.admin.php

函数分析:

这个函数其实比较简单,就是遍历一下指定的栏目,也就是参数$indir,当为文件时,就删除掉,若是一个空目录,删除掉,若是一个目录且里面还有东西则直接进行递归删除之,原理就这么简单。

不过这个函数里面用到了php系统中不常用的一个函数dir($indir)执行这个函数后,得到的值是一个对象,对象里面有三个方法:read(),rewind()以及close()。中间的这个方法极少用到,一般都用另外二个。

测试一下这个函数:

<?php

$ind = dir("a");

while($file=$ind->read()){

    echo $file."<br />";
}

其中,目录a是我们安装完织梦系统后,生成的自带的目录,里面的内容如下图所示。

执行上面的代码后,得到的结果如下图所示。

image.png

对比一下,是不是完全一样?是的,完全相同,现在知道了read()就是读取目录里面的文件夹或文件的名称的。

知道了这个函数就会本教程中的函数RmDirfile($indir)了。

若是点,则不用删除,若是文件则直接通过unlink("$indir/$file")删除文件;否则,递归调用,若是一个目录且为空,则通过函数rmdir("$indir/$file")删除这个空目录。

最后,关闭打开的资源$dh->close();返回1。

网友评论