Browse Source

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

tags/2.0.0-beta
Klimov Paul 12 years ago
parent
commit
8f7a783757
  1. 22
      framework/yii/helpers/base/FileHelper.php
  2. 12
      tests/unit/framework/helpers/FileHelperTest.php

22
framework/yii/helpers/base/FileHelper.php

@ -288,4 +288,26 @@ class FileHelper
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;
}
}

12
tests/unit/framework/helpers/FileHelperTest.php

@ -266,4 +266,16 @@ class FileHelperTest extends TestCase
$foundFiles = FileHelper::findFiles($dirName, $options);
$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!');
}
}
Loading…
Cancel
Save