php中的mkdir()递归创建多级目录
以前一直用一个函数去迭代创建目录单是这个只支持php5,因为php5才支持mkdir()的递归参数.
php5的方法:
function CreateDir($dir){ if ( !is_dir($dir) ) { if ( !@mkdir($dir, 0777, true) ){ return false ; } else { @chmod($dir, 0777); } } return $dir;}
最近在做一个项目的时候,客户的服务器是php4.x的,这个方法肯定不好用,于是乎就到php的官方手册中寻宝. 发现了程度不同的几个写法,看代码: 好笨的方法:
<?phpfunction recursive_mkdir($path, $mode = 0777) { $dirs = explode(DIRECTORY_SEPARATOR , $path); $count = count($dirs); $path = '.'; for ($i = 0; $i < $count; ++$i) { $path .= DIRECTORY_SEPARATOR . $dirs[$i]; if (!is_dir($path) && !mkdir($path, $mode)) { return false; } } return true;}?>
优化了一下的代码:
<?phpfunction mkdir_r($dirName, $rights=0777){ $dirs = explode('/', $dirName); $dir=''; foreach ($dirs as $part) { $dir.=$part.'/'; if (!is_dir($dir) && strlen($dir)>0) mkdir($dir, $rights); }}?>
最牛逼的写法,直接写了个递归函数:
function mkdirs($dir, $mode = 0777, $recursive = true) { if( is_null($dir) || $dir === "" ){ return FALSE; } if( is_dir($dir) || $dir === "/" ){ return TRUE; } if( mkdirs(dirname($dir), $mode, $recursive) ){ return mkdir($dir, $mode); } return FALSE;}
评论

React 18的并发渲染确实是个重大改进,我们在项目中已经升级使用,性能提升明显!