Yii2 FileHelper::findFiles() 返回在指定目录和子目录下找到的文件

2022-01-10 10:27:14 浏览数 (2)

注意

Yii 提供许多类来简化常见编码,如对字条串或数组的操作, HTML 代码生成,等等。这些助手类被编写在命名空间 yiihelpers 下,并且 全是静态类 (就是说它们只包含静态属性和静态方法,而且不能实例化)。

可以通过调用其中一个静态方法来使用助手类,如下:

use yiihelpersFileHelper;

$files = FileHelper::findFiles('uploads',['only'=>['*.jpg']]);

类说明

Class yiihelpersBaseFileHelper

继承

yiihelpersBaseFileHelper

子类

yiihelpersFileHelper

可用版本自

2.0

源码

yii2/BaseFileHelper.php at api · yiichina/yii2 · GitHub

BaseFileHelper 为 yiihelpersFileHelper 提供了具体的实现方法。

不要使用 BaseFileHelper 类。使用 yiihelpersFileHelper 类来代替。

findFiles() 公共 静态 方法

返回在指定目录和子目录下找到的文件

public static array findFiles($dir, $options = [])

官方参数说明请查看 返回在指定目录和子目录下找到的文件。

测试例子1(返回所有文件)

代码语言:javascript复制
$files = FileHelper::findFiles('uploads');

结果

代码语言:javascript复制
array(2) {
  [0]=>
  string(22) "uploadsfilesdemo.txt"
  [1]=>
  string(23) "uploadsimagesdemo.jpg"
}

当我们只传递第一个参数(路径)的情况下,会发现返回的是整个目录下的所有文件。

测试例子2(搜索指定后缀文件)

代码语言:javascript复制
$files = FileHelper::findFiles('uploads',['only'=>['*.jpg']])

结果

代码语言:javascript复制
array(1) {
  [0]=>
  string(23) "uploadsimagesdemo.jpg"
}

当我们想要查找 uploads 目录下所有以 .jpg 结尾的文件时,第二个参数传递 ['only'=>['*.jpg']]即可返回想要的结果。

测试例子3(排除指定后缀文件)

代码语言:javascript复制
$files = FileHelper::findFiles('uploads',['except'=>['*.jpg']]);

结果

代码语言:javascript复制
array(1) {
  [0]=>
  string(22) "uploadsfilesdemo.txt"
}

当我们想要排除 uploads 目录下所有以 .jpg 结尾的文件时,第二个参数传递 ['except'=>['*.jpg']]即可返回想要的结果。

测试例子4(回调函数)

代码语言:javascript复制
$files = FileHelper::findFiles(
    'uploads',
    // $path 指的是要过滤的完整路径。
    ['filter' => function($path){
        echo $path;
    }]
);

结果

代码语言:javascript复制
uploadsfiles
uploadsfilesdemo.txt
uploadsimages
uploadsimagesdemo.jpg

如果不符合项目需求的情况下可以使用回调函数自行处理。

注:uploads目录在web目录下,和index.php入口文件同级。

0 人点赞