zoukankan      html  css  js  c++  java
  • php递归创建文件夹的两种方法

    1、前言

    php中 mkdir 只能创建一个目录(一级)而对于多级目录(创建一级目录时上级目录不存在)就会创建失败。所以在不确定目录级数的时候,我们就需要使用类似一级一级目录的检测,已保证目录创建成功;

    递归创建目录的思路:

    首先判断 dirname 是否是目录,如果是则尝试创建;

    如果失败,则尝试创建上一级目录,使用上一级目录继续 调用本身方法;

    2、采用分割目录的方法创建目录

    /**
     * [simpleBuilt 通过分割方式创建目录]
     * @param  string $dirname [目录名称]
     * @return [type]          [description]
     */
    public function simpleBuilt($dirname) 
    {
        //判断是否是目录,如果是尝试创建目录
        if(is_dir($dirname) || @mkdir($dirname, 0700)) {
            echo "{$dirname}创建成功".PHP_EOL;
        }else{
            $dirArr = explode('/', $dirname);
            array_pop($dirArr);//移除最后一项
            $newDirName = implode('/', $dirArr);
            $this->simpleBuilt($newDirName);//重新调用
            if(@mkdir($dirname, 0777)) {
                echo "{$dirname}创建成功".PHP_EOL;
            }
        }
    }

    3、使用dirname 方法进行创建

    string dirname ( string $path )
    给出一个包含有指向一个文件的全路径的字符串,本函数返回去掉文件名后的目录名。(自动去除最后一个子目录)

    /**
     * [commonBuilt 基于dirname的方法创建目录]
     * @param  string $dirname [目录名称]
     * @return [type]          [description]
     */
    public function commonBuilt($dirname)
    {
        if(is_dir($dirname) || @mkdir($dirname, 0777)) {
            echo "{$dirname}创建成功".PHP_EOL;
        }else{
            $this->commonBuilt(dirname($dirname));
            if(@mkdir($dirname, 0777)) {
                echo "{$dirname}创建成功".PHP_EOL;
            }
        }
    }
     

    4、使用dirname 方法进行创建(简化版)

    /**
     * [superBuilt  commomBuilt方法的简写方法]
     * @param  string $dirname [目录名称]
     * @return [type]          [description]
     */
    public function superBuilt($dirname)
    {
        return is_dir($dirname) or $this->superBuilt(dirname($dirname)) and mkdir($dirname, 0777);
    }

    pHP中逻辑运算符的优先级顺序:&& > || > and > or,即符号型>字母型,AND型>OR型

  • 相关阅读:
    Lotus Notes/Domino发生故障时常用的数据收集步骤
    0207.Domino R8.0.x群集配置手册
    兼容IE、FF的将当前页加入收藏夹和设为首页的js代码
    常用函数
    jsonp详解
    开启curl
    Javascript在页面加载时的执行顺序
    linux系统利用u盘装xp
    Table '.\about_cj\newabout' is marked as crashed and should be repaired
    iframe跨域问题
  • 原文地址:https://www.cnblogs.com/ImCehnyx/p/7781088.html
Copyright © 2011-2022 走看看