去评论
dz插件网

discuz开发插件将插件特定目录移动到论坛指定路径并判断论坛指定路径是否存在旧文件并覆盖更新的写法语句

惧愁人
2023/05/15 17:02:24
discuz开发插件将插件特定目录移动到论坛指定路径并判断论坛指定路径是否存在旧文件并覆盖更新的写法语句:

应用到 @rename 重命名函数,接受两个参数,第一个参数是要重命名的文件或目录路径,第二个参数是新的文件或目录路径。在这里,例如第一个参数是 `DISCUZ_ROOT.'./source/plugin/chajian/mulu1'`,即要重命名的目录的路径;第二个参数是 `DISCUZ_ROOT.'./data/mulu2'`,即新的目录路径。
语句:
  1. @rename(DISCUZ_ROOT.'./source/plugin/chajian/mulu1',DISCUZ_ROOT.'./data/mulu2');
这段代码的作用是将 ./source/plugin/chajian/mulu1 目录重命名为 ./data/mulu2 目录,并将其移动到 Discuz data目录下。这可能是为了将插件目录移动到更合适的位置,或者为了更方便地访问插件目录中的文件。


第二个操作:判断是否存在旧文件并覆盖更新
定义目标目录位置:
  1. delDirAndFile(DISCUZ_ROOT.'./data/mulu2');
删除指定目录及其下的所有文件和子目录,可以用于清空缓存或临时文件目录等场景:

  1. function delDirAndFile($path, $delDir = true) {
  2.         if (is_array($path)) {
  3.                 foreach($path as $subPath) {
  4.                         delDirAndFile($subPath, $delDir);
  5.                 }
  6.         }
  7.         if (is_dir($path)) {
  8.                 $handle = opendir($path);
  9.                 if ($handle) {
  10.                         while (false !== ($item = readdir($handle))) {
  11.                                 if ($item != "." && $item != "..") {
  12.                                         is_dir("$path/$item") ? delDirAndFile("$path/$item", $delDir) : unlink("$path/$item");
  13.                                 }
  14.                         }
  15.                         closedir($handle);
  16.                         if ($delDir) {
  17.                                 return rmdir($path);
  18.                         }
  19.                 }
  20.         } else {
  21.                 if (file_exists($path)) {
  22.                         return unlink($path);
  23.                 } else {
  24.                         return false;
  25.                 }
  26.         }
  27. }