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

 

注意

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

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

use yii\helpers\FileHelper;

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

 

类说明

Class yii\helpers\BaseFileHelper

继承yii\helpers\BaseFileHelper
子类yii\helpers\FileHelper
可用版本自2.0
源码https://github.com/yiichina/yii2/blob/api/framework/helpers/BaseFileHelper.php

BaseFileHelper 为 yii\helpers\FileHelper 提供了具体的实现方法。

不要使用 BaseFileHelper 类。使用 yii\helpers\FileHelper 类来代替。

 

findFiles() 公共 静态 方法

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

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

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

 

 

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

$files = FileHelper::findFiles('uploads');

结果

array(2) {
  [0]=>
  string(22) "uploads\files\demo.txt"
  [1]=>
  string(23) "uploads\images\demo.jpg"
}

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

 

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

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

结果

array(1) {
  [0]=>
  string(23) "uploads\images\demo.jpg"
}

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

 

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

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

结果

array(1) {
  [0]=>
  string(22) "uploads\files\demo.txt"
}

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

 

测试例子4(回调函数)

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

结果

uploads\files
uploads\files\demo.txt
uploads\images
uploads\images\demo.jpg

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

 

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

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值