backport f5dbbea5f: Utils: added recursiveUnlink()

This commit is contained in:
Dylan K. Taylor 2019-03-03 17:39:13 +00:00
parent eaa78fe849
commit 680cdb8e3e

View File

@ -54,6 +54,8 @@ use function gettype;
use function hexdec;
use function implode;
use function is_array;
use function is_dir;
use function is_file;
use function is_object;
use function is_readable;
use function is_string;
@ -72,6 +74,8 @@ use function preg_match_all;
use function preg_replace;
use function proc_close;
use function proc_open;
use function rmdir;
use function scandir;
use function sha1;
use function spl_object_hash;
use function str_pad;
@ -85,11 +89,13 @@ use function strtolower;
use function substr;
use function sys_get_temp_dir;
use function trim;
use function unlink;
use function xdebug_get_function_stack;
use const PHP_EOL;
use const PHP_INT_MAX;
use const PHP_INT_SIZE;
use const PHP_MAXPATHLEN;
use const SCANDIR_SORT_NONE;
use const STR_PAD_LEFT;
use const STR_PAD_RIGHT;
@ -734,4 +740,22 @@ class Utils{
throw new \TypeError("Declaration of callable `" . CallbackType::createFromCallable($subject) . "` must be compatible with `" . $sigType . "`");
}
}
public static function recursiveUnlink(string $dir) : void{
if(is_dir($dir)){
$objects = scandir($dir, SCANDIR_SORT_NONE);
foreach($objects as $object){
if($object !== "." and $object !== ".."){
if(is_dir($dir . "/" . $object)){
self::recursiveUnlink($dir . "/" . $object);
}else{
unlink($dir . "/" . $object);
}
}
}
rmdir($dir);
}elseif(is_file($dir)){
unlink($dir);
}
}
}