mirror of
https://github.com/yiisoft/yii2.git
synced 2025-11-18 15:31:06 +08:00
Method "yii\helpers\base\FileHelper::removeDirectory()" has been added.
This commit is contained in:
@@ -169,4 +169,26 @@ class FileHelper
|
||||
}
|
||||
closedir($handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes a directory recursively.
|
||||
* @param string $directory to be deleted recursively.
|
||||
*/
|
||||
public static function removeDirectory($directory)
|
||||
{
|
||||
$items = glob($directory . DIRECTORY_SEPARATOR . '{,.}*', GLOB_MARK | GLOB_BRACE);
|
||||
foreach ($items as $item) {
|
||||
if (basename($item) == '.' || basename($item) == '..') {
|
||||
continue;
|
||||
}
|
||||
if (substr($item, -1) == DIRECTORY_SEPARATOR) {
|
||||
self::removeDirectory($item);
|
||||
} else {
|
||||
unlink($item);
|
||||
}
|
||||
}
|
||||
if (is_dir($directory)) {
|
||||
rmdir($directory);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,6 +9,9 @@ use yii\test\TestCase;
|
||||
*/
|
||||
class FileHelperTest extends TestCase
|
||||
{
|
||||
/**
|
||||
* @var string test files path.
|
||||
*/
|
||||
private $testFilePath = '';
|
||||
|
||||
public function setUp()
|
||||
@@ -46,7 +49,8 @@ class FileHelperTest extends TestCase
|
||||
|
||||
// Tests :
|
||||
|
||||
public function testCopyDirectory() {
|
||||
public function testCopyDirectory()
|
||||
{
|
||||
$basePath = $this->testFilePath;
|
||||
$srcDirName = $basePath . DIRECTORY_SEPARATOR . 'test_src_dir';
|
||||
mkdir($srcDirName, 0777, true);
|
||||
@@ -68,4 +72,27 @@ class FileHelperTest extends TestCase
|
||||
$this->assertEquals($content, file_get_contents($fileName), 'Incorrect file content!');
|
||||
}
|
||||
}
|
||||
|
||||
public function testRemoveDirectory()
|
||||
{
|
||||
$basePath = $this->testFilePath;
|
||||
$dirName = $basePath . DIRECTORY_SEPARATOR . 'test_dir_for_remove';
|
||||
mkdir($dirName, 0777, true);
|
||||
$files = array(
|
||||
'file1.txt' => 'file 1 content',
|
||||
'file2.txt' => 'file 2 content',
|
||||
);
|
||||
foreach ($files as $name => $content) {
|
||||
file_put_contents($dirName . DIRECTORY_SEPARATOR . $name, $content);
|
||||
}
|
||||
$subDirName = $dirName . DIRECTORY_SEPARATOR . 'test_sub_dir';
|
||||
mkdir($subDirName, 0777, true);
|
||||
foreach ($files as $name => $content) {
|
||||
file_put_contents($subDirName . DIRECTORY_SEPARATOR . $name, $content);
|
||||
}
|
||||
|
||||
FileHelper::removeDirectory($dirName);
|
||||
|
||||
$this->assertFalse(file_exists($dirName), 'Unable to remove directory!');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user