Home Backend Development PHP Tutorial How to create a multi-level directory with complete encapsulation classes in PHP

How to create a multi-level directory with complete encapsulation classes in PHP

May 18, 2018 pm 01:50 PM
php whole encapsulation

本篇文章主要介绍php创建多级目录完整封装类的方法,感兴趣的朋友参考下,希望对大家有所帮助。

创建多级目录函数中调用创建指定下的指定文件的函数:

1

2

3

4

public function create_dir($dir,$mode=0777)

 {

   return is_dir($dir) or ($this->create_dir(dirname($dir)) and mkdir($dir, $mode));

 }

Copy after login

创建指定路径下的指定文件,string 需要包含文件名和后缀path(需要包含文件名和后缀),booleanover_write 是否覆盖文件,int 设置时间。默认是当前系统时间time设置时间。默认是当前系统时间,intatime 设置访问时间。默认是当前系统时间。函数如下中调用了create_dir创建目录函数及删除unlink_file函数:

1

2

3

4

5

6

7

8

9

10

11

12

13

public function create_file($path,$over_write=FALSE,$time=NULL,$atime=NULL)

  {

    $path = $this->dir_replace($path);

    $time = empty($time) ? time() : $time;

    $atime = empty($atime) ? time() : $atime;

    if(file_exists($path) && $over_write)

    {

      $this->unlink_file($path);

    }

    $aimDir = dirname($path);

    $this->create_dir($aimDir);

    return touch($path,$time,$atime);

  }

Copy after login

删除非空目录函数,说明:只能删除非系统和特定权限的文件,否则会出现错误,string目录路径dirName目录路径,booleanis_all是否删除所有,boolean $del_dir 是否删除目录,函数如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

public function remove_dir($dir_path,$is_all=FALSE)

  {

    $dirName = $this->dir_replace($dir_path);

    $handle = @opendir($dirName);

    while (($file = @readdir($handle)) !== FALSE)

    {

      if($file != '.' && $file != '..')

      {

        $dir = $dirName . '/' . $file;

        if($is_all)

        {

          is_dir($dir) ? $this->remove_dir($dir) : $this->unlink_file($dir);

        }

        else

        {

          if(is_file($dir))

          {

            $this->unlink_file($dir);

          }

        }

      }

    }

    closedir($handle);

    return @rmdir($dirName);

  }

Copy after login

替换路径中//的字符相应的字符函数:

1

2

3

4

public function dir_replace($path)

  {

    return str_replace('//','/',str_replace('\\','/',$path));

  }

Copy after login

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

/**

   * 指定文件编码转换

   * @param string $path 文件路径

   * @param string $input_code 原始编码

   * @param string $out_code 输出编码

   * @return boolean

   */

  public function change_file_code($path,$input_code,$out_code)

  {

    if(is_file($path))//检查文件是否存在,如果存在就执行转码,返回真

    {

      $content = file_get_contents($path);

      $content = string::chang_code($content,$input_code,$out_code);

      $fp = fopen($path,'w');

      return fputs($fp,$content) ? TRUE : FALSE;

      fclose($fp);

    }

  }

Copy after login

/**
* 取得上传文件信息
* @param $file file属性信息
* @return array
*/

1

2

3

4

5

6

7

8

9

10

11

12

public function get_upload_file_info($file)

  {

    $file_info = $_FILES[$file];//取得上传文件基本信息

    $info = array();

    $info['type'] = strtolower(trim(stripslashes(preg_replace("/^(.+?);.*$/", "\\1", $file_info['type'])), '"'));//取得文件类型

    $info['temp'] = $file_info['tmp_name'];//取得上传文件在服务器中临时保存目录

    $info['size'] = $file_info['size'];//取得上传文件大小

    $info['error'] = $file_info['error'];//取得文件上传错误

    $info['name'] = $file_info['name'];//取得上传文件名

    $info['ext']  = $this->get_ext($file_info['name']);//取得上传文件后缀

    return $info;

  }

Copy after login

/**
* 取得文件路径信息
* @param $full_path 完整路径
* @return ArrayObject
*/

1

2

3

4

5

6

7

public function get_file_type($path)

  {

    //pathinfo() 函数以数组的形式返回文件路径的信息。

    //---------$file_info = pathinfo($path); echo file_info['extension'];----------//

    //extension取得文件后缀名【pathinfo($path,PATHINFO_EXTENSION)】-----dirname取得文件路径【pathinfo($path,PATHINFO_DIRNAME)】-----basename取得文件完整文件名【pathinfo($path,PATHINFO_BASENAME)】-----filename取得文件名【pathinfo($path,PATHINFO_FILENAME)】

    return pathinfo($path);

  }

Copy after login

/**
* 返回指定文件和目录的信息
* @param string $file
* @return ArrayObject
*/

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

public function list_info($file)

  {

    $dir = array();

    $dir['filename']  = basename($file);//返回路径中的文件名部分。

    $dir['pathname']  = realpath($file);//返回绝对路径名。

    $dir['owner']   = fileowner($file);//文件的 user ID (所有者)。

    $dir['perms']   = fileperms($file);//返回文件的 inode 编号。

    $dir['inode']   = fileinode($file);//返回文件的 inode 编号。

    $dir['group']   = filegroup($file);//返回文件的组 ID。

    $dir['path']    = dirname($file);//返回路径中的目录名称部分。

    $dir['atime']   = fileatime($file);//返回文件的上次访问时间。

    $dir['ctime']   = filectime($file);//返回文件的上次改变时间。

    $dir['perms']   = fileperms($file);//返回文件的权限。

    $dir['size']    = filesize($file);//返回文件大小。

    $dir['type']    = filetype($file);//返回文件类型。

    $dir['ext']    = is_file($file) ? pathinfo($file,PATHINFO_EXTENSION) : '';//返回文件后缀名

    $dir['mtime']   = filemtime($file);//返回文件的上次修改时间。

    $dir['isDir']   = is_dir($file);//判断指定的文件名是否是一个目录。

    $dir['isFile']   = is_file($file);//判断指定文件是否为常规的文件。

    $dir['isLink']   = is_link($file);//判断指定的文件是否是连接。

    $dir['isReadable'] = is_readable($file);//判断文件是否可读。

    $dir['isWritable'] = is_writable($file);//判断文件是否可写。

    $dir['isUpload']  = is_uploaded_file($file);//判断文件是否是通过 HTTP POST 上传的。

    return $dir;

  }

Copy after login

相关推荐:

Python实现按当前日期(年、月、日)创建多级目录的方法

php使用mkdir创建多级目录入门例子

php缓存多级目录的开发示例

The above is the detailed content of How to create a multi-level directory with complete encapsulation classes in PHP. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Roblox: Bubble Gum Simulator Infinity - How To Get And Use Royal Keys
1 months ago By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Fusion System, Explained
1 months ago By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers Of The Witch Tree - How To Unlock The Grappling Hook
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Hot Topics

Java Tutorial
1677
14
PHP Tutorial
1280
29
C# Tutorial
1257
24
What happens if session_start() is called multiple times? What happens if session_start() is called multiple times? Apr 25, 2025 am 12:06 AM

Multiple calls to session_start() will result in warning messages and possible data overwrites. 1) PHP will issue a warning, prompting that the session has been started. 2) It may cause unexpected overwriting of session data. 3) Use session_status() to check the session status to avoid repeated calls.

Composer: Aiding PHP Development Through AI Composer: Aiding PHP Development Through AI Apr 29, 2025 am 12:27 AM

AI can help optimize the use of Composer. Specific methods include: 1. Dependency management optimization: AI analyzes dependencies, recommends the best version combination, and reduces conflicts. 2. Automated code generation: AI generates composer.json files that conform to best practices. 3. Improve code quality: AI detects potential problems, provides optimization suggestions, and improves code quality. These methods are implemented through machine learning and natural language processing technologies to help developers improve efficiency and code quality.

What is the significance of the session_start() function? What is the significance of the session_start() function? May 03, 2025 am 12:18 AM

session_start()iscrucialinPHPformanagingusersessions.1)Itinitiatesanewsessionifnoneexists,2)resumesanexistingsession,and3)setsasessioncookieforcontinuityacrossrequests,enablingapplicationslikeuserauthenticationandpersonalizedcontent.

How to use MySQL functions for data processing and calculation How to use MySQL functions for data processing and calculation Apr 29, 2025 pm 04:21 PM

MySQL functions can be used for data processing and calculation. 1. Basic usage includes string processing, date calculation and mathematical operations. 2. Advanced usage involves combining multiple functions to implement complex operations. 3. Performance optimization requires avoiding the use of functions in the WHERE clause and using GROUPBY and temporary tables.

H5: Key Improvements in HTML5 H5: Key Improvements in HTML5 Apr 28, 2025 am 12:26 AM

HTML5 brings five key improvements: 1. Semantic tags improve code clarity and SEO effects; 2. Multimedia support simplifies video and audio embedding; 3. Form enhancement simplifies verification; 4. Offline and local storage improves user experience; 5. Canvas and graphics functions enhance the visualization of web pages.

Composer: The Package Manager for PHP Developers Composer: The Package Manager for PHP Developers May 02, 2025 am 12:23 AM

Composer is a dependency management tool for PHP, and manages project dependencies through composer.json file. 1) parse composer.json to obtain dependency information; 2) parse dependencies to form a dependency tree; 3) download and install dependencies from Packagist to the vendor directory; 4) generate composer.lock file to lock the dependency version to ensure team consistency and project maintainability.

How to use type traits in C? How to use type traits in C? Apr 28, 2025 pm 08:18 PM

typetraits are used in C for compile-time type checking and operation, improving code flexibility and type safety. 1) Type judgment is performed through std::is_integral and std::is_floating_point to achieve efficient type checking and output. 2) Use std::is_trivially_copyable to optimize vector copy and select different copy strategies according to the type. 3) Pay attention to compile-time decision-making, type safety, performance optimization and code complexity. Reasonable use of typetraits can greatly improve code quality.

How to configure the character set and collation rules of MySQL How to configure the character set and collation rules of MySQL Apr 29, 2025 pm 04:06 PM

Methods for configuring character sets and collations in MySQL include: 1. Setting the character sets and collations at the server level: SETNAMES'utf8'; SETCHARACTERSETutf8; SETCOLLATION_CONNECTION='utf8_general_ci'; 2. Create a database that uses specific character sets and collations: CREATEDATABASEexample_dbCHARACTERSETutf8COLLATEutf8_general_ci; 3. Specify character sets and collations when creating a table: CREATETABLEexample_table(idINT

See all articles