Repository navigation
Expand file tree
/
Copy pathFileSystem.php
More file actions
64 lines (59 loc) · 1.77 KB
/
Copy pathFileSystem.php
File metadata and controls
64 lines (59 loc) · 1.77 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<?php
namespace Codeception\Util;
/**
* @author tiger
*/
class FileSystem
{
public static function doEmptyDir($path)
{
$iterator = new \RecursiveIteratorIterator(
new \RecursiveDirectoryIterator($path),
\RecursiveIteratorIterator::CHILD_FIRST
);
foreach ($iterator as $path) {
if ($path->isDir()) {
$dir = (string) $path;
if (basename($dir) === '.' || basename($dir) === '..') {
continue;
}
rmdir($dir);
} else {
$file = (string)$path;
if (basename($file) === '.gitignore') {
continue;
}
unlink($path->__toString());
}
}
}
public static function deleteDir($dir)
{
if (!file_exists($dir)) return true;
if (!is_dir($dir) || is_link($dir)) return unlink($dir);
foreach (scandir($dir) as $item) {
if ($item == '.' || $item == '..') continue;
if (!self::deleteDir($dir . "/" . $item)) {
chmod($dir . "/" . $item, 0777);
if (!self::deleteDir($dir . "/" . $item)) return false;
}
}
return rmdir($dir);
}
public static function copyDir($src, $dst)
{
$dir = opendir($src);
@mkdir($dst);
while(false !== ( $file = readdir($dir)) ) {
if (( $file != '.' ) && ( $file != '..' )) {
if ( is_dir($src . '/' . $file) ) {
self::copyDir($src . '/' . $file,$dst . '/' . $file);
}
else {
copy($src . '/' . $file,$dst . '/' . $file);
}
}
}
closedir($dir);
}
}