Class yii\helpers\BaseFileHelper

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

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

不要使用 BaseFileHelper. 改用 yii\helpers\FileHelper.

公共属性

隐藏继承的属性

属性类型描述定义在
$mimeAliasesFile string 包含 MIME 别名的 PHP 文件的路径(或别名). yii\helpers\BaseFileHelper
$mimeMagicFile string 包含 MIME 类型信息的 PHP 文件的路径(或别名). yii\helpers\BaseFileHelper

公共方法

隐藏继承的方法

方法描述定义在
copyDirectory() 将整个目录复制为另一个目录. yii\helpers\BaseFileHelper
createDirectory() 创建一个新目录. yii\helpers\BaseFileHelper
filterPath() 检查给定的文件路径是否满足过滤选项. yii\helpers\BaseFileHelper
findDirectories() 返回在指定目录和子目录下找到的目录. yii\helpers\BaseFileHelper
findFiles() 返回在指定目录和子目录下找到的文件. yii\helpers\BaseFileHelper
getExtensionsByMimeType() 根据给定的 MIME 类型确定扩展名. yii\helpers\BaseFileHelper
getMimeType() 获取指定文件的 MIME 类型. yii\helpers\BaseFileHelper
getMimeTypeByExtension() 根据指定文件的扩展名确定 MIME 类型. yii\helpers\BaseFileHelper
localize() 返回指定文件的本地化版本. yii\helpers\BaseFileHelper
normalizePath() 规范化文件/目录路径. yii\helpers\BaseFileHelper
removeDirectory() 递归删除目录(及其所有内容). yii\helpers\BaseFileHelper
unlink() 以跨平台方式移除文件或符号链接. yii\helpers\BaseFileHelper

受保护的方法

隐藏继承的方法

方法描述定义在
loadMimeAliases() 从指定文件加载 MIME 别名. yii\helpers\BaseFileHelper
loadMimeTypes() 从指定的文件加载 MIME 类型. yii\helpers\BaseFileHelper
normalizeOptions() 规范化选项. yii\helpers\BaseFileHelper

常量

隐藏继承的常量

常量描述定义在
PATTERN_CASE_INSENSITIVE 32 yii\helpers\BaseFileHelper
PATTERN_ENDSWITH 4 yii\helpers\BaseFileHelper
PATTERN_MUSTBEDIR 8 yii\helpers\BaseFileHelper
PATTERN_NEGATIVE 16 yii\helpers\BaseFileHelper
PATTERN_NODIR 1 yii\helpers\BaseFileHelper

属性详情

$mimeAliasesFile public static 属性 (可用自版本: 2.0.14)

包含 MIME 别名的 PHP 文件的路径(或别名).

public static string $mimeAliasesFile '@yii/helpers/mimeAliases.php'
$mimeMagicFile public static 属性

包含 MIME 类型信息的 PHP 文件的路径(或别名).

public static string $mimeMagicFile '@yii/helpers/mimeTypes.php'

方法详情

copyDirectory() public static 方法

将整个目录复制为另一个目录.

文件和子目录也将被复制.

public static void copyDirectory ( $src, $dst, $options = [] )
$src string

源目录.

$dst string

目标目录.

$options array

目录复制选项. 有效选项包括:

  • dirMode: integer, 为新复制的目录设置的权限. 默认为0775.
  • fileMode: integer, 为新复制的文件设置的权限. 默认为当前环境设置.
  • filter: callback, 为每个目录或文件调用的 PHP 回调函数. 回调的签名应该是:function ($path), 其中$path指要被过滤的完整路径. 该回调可以返回以下值之一:
    • true: 该目录或文件将被复制(将忽略onlyexcept选项).
    • false: 该目录或文件将不会被复制(将忽略onlyexcept选项).
    • null: onlyexcept选项将决定是否复制目录或文件.
  • only: array, 如果要复制文件路径, 应匹配的模式列表. 如果路径末尾包含模式字符串, 则路径与模式匹配. 例如, .php匹配以.php结尾的所有文件路径.

    Note: 模式中的/字符与路径中的/\都匹配. 如果文件路径同时与onlyexcept中的模式匹配, 则不会被复制.

  • except: array, 如果要将文件或目录排除在复制之外, 应匹配的模式列表. 如果路径的结尾包含模式字符串, 则路径与模式匹配. 以/结尾的模式仅适用于目录路径, 而不以/结尾的模式仅适用于文件路径. 例如, /a/b匹配以/a/b结尾的所有文件路径; 而.svn/匹配以.svn结尾的目录路径.

    Note: 模式中的/字符与路径中的/\都匹配.

  • caseSensitive: boolean, onlyexcept指定的模式是否区分大小写. 默认为true.
  • recursive: boolean, 是否也应该复制子目录下的文件. 默认为true.
  • beforeCopy: callback, 在复制每个子目录或文件之前调用的 PHP 回调函数. 如果回调函数返回false, 则将取消子目录或文件的复制操作. 回调的签名应该是function ($from, $to), 其中$from是要复制的子目录或文件, 而$to是复制目标.
  • afterCopy: callback, 在每个子目录或文件成功复制后调用的 PHP 回调函数. 回调的签名应该是function ($from, $to), 其中$from是要复制的子目录或文件, 而$to是复制目标.
  • copyEmptyDirectories: boolean, 是否复制空目录. 将其设置为 false以避免创建不包含文件的目录. 这会影响最初不包含文件的目录以及目录中不包含文件的目录, 因为文件已通过onlyexcept过滤掉. 默认为true. 此选项自版本 2.0.12 起可用. 2.0.12 之前始终复制空目录.
throws yii\base\InvalidArgumentException

如果无法打开目录.

createDirectory() public static 方法

创建一个新目录.

该方法类似于 PHP 的mkdir()函数, 只是它使用chmod()来设置创建目录的权限, 以避免umask设置的影响.

public static boolean createDirectory ( $path, $mode 0775, $recursive true )
$path string

要创建的目录的路径.

$mode integer

为创建的目录设置的权限. 默认为0775.

$recursive boolean

是否创建父目录(如果它们不存在). 默认为true.

return boolean

目录是否成功创建.

throws yii\base\Exception

如果无法创建目录(即由于并行更改导致的 PHP 错误).

filterPath() public static 方法

检查给定的文件路径是否满足过滤选项.

public static boolean filterPath ( $path, $options )
$path string

要检查的文件或目录的路径.

$options array

过滤选项. 有关支持的选项的说明, 请参阅 findFiles().

return boolean

文件或目录是否满足过滤选项.

findDirectories() public static 方法 (可用自版本: 2.0.14)

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

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

将在其下查找文件的目录.

$options array

目录搜索选项. 有效选项包括:

  • filter: callback, 为每个目录或文件调用的 PHP 回调函数. 回调的签名应该是:function ($path), 其中$path指要被过滤的完整路径. 该回调可以返回以下值之一:
    • true: 该目录将被返回.
    • false: 该目录将不会被返回.
  • recursive: boolean, 是否也应该查找子目录下的文件. 默认为true.
return array

在目录下找到的目录, 没有特定的顺序. 顺序取决于使用的文件系统.

throws yii\base\InvalidArgumentException

如果目录无效.

findFiles() public static 方法

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

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

将在其下查找文件的目录.

$options array

文件搜索选项. 有效选项包括:

  • filter: callback, 为每个目录或文件调用的 PHP 回调函数. 回调的签名应该是:function ($path), 其中$path指要被过滤的完整路径. 该回调可以返回以下值之一:
    • true: 该目录或文件将被返回(将忽略onlyexcept选项).
    • false: 该目录或文件将不会被返回(将忽略onlyexcept选项).
    • null: onlyexcept选项将决定是否返回目录或文件.
  • except: array, 从匹配匹配文件或目录路径的结果中排除的模式列表. 以斜杠(/)结尾的模式仅适用于目录路径, 而不以/结尾的模式仅适用于文件路径. 例如, /a/b匹配以/a/b结尾的所有文件路径; .svn/匹配以.svn结尾的目录路径. 如果模式不包含斜杠(/), 则将其视为 shell glob 模式, 并检查相对于$dir的路径名的匹配. 否则, 该模式被视为一个适用于fnmatch(3)使用FNM_PATHNAME标志的 shell glob: 模式中的通配符与路径名中的/不匹配. 例如, views/*.php匹配views/index.php, 但不匹配views/controller/index.php. 前导斜杠匹配路径名的开头. 例如, /*.php匹配index.php, 但不匹配views/start/index.php. 可选的前缀!表示否定模式; 之前模式排除的任何匹配文件将再次包含在内. 如果否定模式匹配, 则将覆盖较低优先级的模式源. 对于以!开头的模式, 在第一个!前面加一个反斜杠(\), 例如:\!important!.txt.

    Note: 模式中的/字符与路径中的/\都匹配.

  • only: array, 文件路径在返回时应匹配的模式列表. 不检查目录路径. 使用与except选项中相同的模式匹配规则. 如果文件路径同时与onlyexcept中的模式匹配, 则不会被返回.
  • caseSensitive: boolean, 在onlyexcept指定的模式是否应区分大小写. 默认为true.
  • recursive: boolean, 是否也应该查找子目录下的文件. 默认为true.
return array

在目录下找到的文件, 没有特定的顺序. 顺序取决于使用的文件系统.

throws yii\base\InvalidArgumentException

如果目录无效.

getExtensionsByMimeType() public static 方法

根据给定的 MIME 类型确定扩展名.

此方法将使用扩展名和 MIME 类型之间的本地映射.

public static array getExtensionsByMimeType ( $mimeType, $magicFile null )
$mimeType string

文件的 MIME 类型.

$magicFile string

包含所有可用 MIME 类型信息的文件的路径(或别名). 如果未设置, 将使用由 $mimeMagicFile 指定的文件.

return array

与指定的 MIME 类型对应的扩展名.

getMimeType() public static 方法

获取指定文件的 MIME 类型.

此方法将首先尝试基于 finfo_open 获取 MIME 类型. 如果未安装fileinfo扩展, 当$checkExtensiontrue时, 它将回退到 getMimeTypeByExtension().

public static string getMimeType ( $file, $magicFile null, $checkExtension true )
$file string

文件名.

$magicFile string

可选魔术数据库文件的名称(或别名). 通常类似于/path/to/magic.mime. 当安装了fileinfo扩展时, 这将作为第二个参数传递给 finfo_open(). 如果通过 getMimeTypeByExtension() 获取 MIME 类型并且该类型为null, 则它将使用由 $mimeMagicFile 指定的文件.

$checkExtension boolean

是否使用文件扩展名来获取 MIME 类型, 以防finfo_open()无法获取它.

return string

MIME 类型(eg. text/plain). 如果无法确定 MIME 类型, 则返回null.

throws yii\base\InvalidConfigException

当没有安装 PHP fileinfo扩展并且$checkExtensionfalse时.

getMimeTypeByExtension() public static 方法

根据指定文件的扩展名确定 MIME 类型.

此方法将使用扩展名和 MIME 类型之间的本地映射.

public static string|null getMimeTypeByExtension ( $file, $magicFile null )
$file string

文件名.

$magicFile string

包含所有可用 MIME 类型信息的文件的路径(或别名). 如果未设置, 将使用由 $mimeMagicFile 指定的文件.

return string|null

MIME 类型. 如果无法确定 MIME 类型, 则返回null.

loadMimeAliases() protected static 方法 (可用自版本: 2.0.14)

从指定文件加载 MIME 别名.

protected static array loadMimeAliases ( $aliasesFile )
$aliasesFile string

包含 MIME 类型的文件的路径(或别名). 如果未设置, 将使用由 $mimeAliasesFile 指定的文件.

return array

从文件扩展名到 MIME 类型的映射.

loadMimeTypes() protected static 方法

从指定的文件加载 MIME 类型.

protected static array loadMimeTypes ( $magicFile )
$magicFile string

包含所有可用 MIME 类型信息的文件的路径(或别名). 如果未设置, 将使用由 $mimeMagicFile 指定的文件.

return array

从文件扩展名到 MIME 类型的映射.

localize() public static 方法

返回指定文件的本地化版本.

搜索基于指定的语言代码.

特别是, 将在名称与语言代码相同的子目录下查找具有相同名称的文件.

例如, 给定文件path/to/view.php和语言代码zh-CN, 本地化文件将被查找为path/to/zh-CN/view.php.

如果找不到该文件, 它将尝试使用zh的语言代码进行回退, 即path/to/zh/view.php. 如果仍找不到, 将返回原始文件.

如果目标语言与源语言代码相同, 则将返回原始文件.

public static string localize ( $file, $language null, $sourceLanguage null )
$file string

原始文件.

$language string

文件应该被本地化的目标语言. 如果未设置, 则将使用 yii\base\Application::$language 的值.

$sourceLanguage string

原始文件所在的语言. 如果未设置, 则将使用 yii\base\Application::$sourceLanguage 的值.

return string

匹配的本地化文件, 或如果未找到本地化版本则返回原始文件. 如果目标语言和源语言代码相同, 则将返回原始文件.

normalizeOptions() protected static 方法 (可用自版本: 2.0.12)

规范化选项.

protected static array normalizeOptions ( array $options )
$options array

原始选项.

return array

规范化后的选项.

normalizePath() public static 方法

规范化文件/目录路径.

规范化做了以下工作:

  • 将所有目录分隔符转换为DIRECTORY_SEPARATOR(eg. \a/b\c转换为/a/b/c).
  • 删除尾部目录分隔符(eg. /a/b/c/转换为/a/b/c).
  • 将多个连续的斜杠转换为单斜杠(eg. /a///b/c转换为/a/b/c).
  • 基于其含义删除...(eg. /a/./b/../c转换为/a/c).

Note: 对于已注册的流包装器, 连续的斜杠规则和".."/"."翻译将被跳过.

public static string normalizePath ( $path, $ds DIRECTORY_SEPARATOR )
$path string

要规范化的文件/目录路径.

$ds string

在规范化结果中使用的目录分隔符. 默认为DIRECTORY_SEPARATOR.

return string

规范化的文件/目录路径.

removeDirectory() public static 方法

递归删除目录(及其所有内容).

public static void removeDirectory ( $dir, $options = [] )
$dir string

要递归删除的目录.

$options array

目录删除选项. 有效选项包括:

  • traverseSymlinks: boolean, 是否应遍历目录的符号链接(快捷方式). 默认:false, 表示不会删除符号链接(快捷方式)目录的内容. 在该默认情况下, 仅删除符号链接(快捷方式).
throws yii\base\ErrorException

在失败的情况下.

unlink() public static 方法 (可用自版本: 2.0.14)

以跨平台方式移除文件或符号链接.

public static boolean unlink ( $path )
$path string