Commit 8f7a7837 by Klimov Paul

Method "yii\helpers\base\FileHelper::mkdir()" has been added.

parent f416a366
...@@ -288,4 +288,26 @@ class FileHelper ...@@ -288,4 +288,26 @@ class FileHelper
return false; return false;
} }
} }
/**
* Shared environment safe version of mkdir. Supports recursive creation.
* For avoidance of umask side-effects chmod is used.
*
* @param string $path path to be created.
* @param integer $mode the permission to be set for created directory. If not set 0777 will be used.
* @param boolean $recursive whether to create directory structure recursive if parent dirs do not exist.
* @return boolean result of mkdir.
* @see mkdir
*/
public static function mkdir($path, $mode = null, $recursive = false)
{
$prevDir = dirname($path);
if ($recursive && !is_dir($path) && !is_dir($prevDir)) {
static::mkdir(dirname($path), $mode, true);
}
$mode = isset($mode) ? $mode : 0777;
$result = mkdir($path, $mode);
chmod($path, $mode);
return $result;
}
} }
...@@ -266,4 +266,16 @@ class FileHelperTest extends TestCase ...@@ -266,4 +266,16 @@ class FileHelperTest extends TestCase
$foundFiles = FileHelper::findFiles($dirName, $options); $foundFiles = FileHelper::findFiles($dirName, $options);
$this->assertEquals(array($dirName . DIRECTORY_SEPARATOR . $fileName), $foundFiles); $this->assertEquals(array($dirName . DIRECTORY_SEPARATOR . $fileName), $foundFiles);
} }
public function testMkdir() {
$basePath = $this->testFilePath;
$dirName = $basePath . DIRECTORY_SEPARATOR . 'test_dir';
FileHelper::mkdir($dirName);
$this->assertTrue(file_exists($dirName), 'Unable to create directory!');
$dirName = $basePath . DIRECTORY_SEPARATOR . 'test_dir_level_1' . DIRECTORY_SEPARATOR . 'test_dir_level_2';
FileHelper::mkdir($dirName, null, true);
$this->assertTrue(file_exists($dirName), 'Unable to create directory recursively!');
}
} }
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment