0 フォロワー

クラス yii\helpers\FileHelper

継承yii\helpers\FileHelper » yii\helpers\BaseFileHelper
利用可能なバージョン2.0
ソースコード https://github.com/yiisoft/yii2/blob/master/framework/helpers/FileHelper.php

ファイルシステムヘルパー。

公開プロパティ

継承されたプロパティを隠す

プロパティ 説明 定義元
$mimeAliasesFile string MIMEエイリアスを含むPHPファイルのパス(またはエイリアス)。 yii\helpers\BaseFileHelper
$mimeExtensionsFile string MIMEタイプごとの拡張子を含むPHPファイルのパス(またはエイリアス)。 yii\helpers\BaseFileHelper
$mimeMagicFile string MIMEタイプ情報を含むPHPファイルのパス(またはエイリアス)。 yii\helpers\BaseFileHelper

公開メソッド

継承されたメソッドを隠す

メソッド 説明 定義元
changeOwnership() ファイルまたはディレクトリのUnixユーザーおよび/またはグループの所有権、およびオプションでモードを変更します。 yii\helpers\BaseFileHelper
copyDirectory() ディレクトリ全体を別のディレクトリとしてコピーします。 yii\helpers\BaseFileHelper
createDirectory() 新しいディレクトリを作成します。 yii\helpers\BaseFileHelper
filterPath() 指定されたファイルパスがフィルタリングオプションを満たしているかどうかを確認します。 yii\helpers\BaseFileHelper
findDirectories() 指定されたディレクトリおよびサブディレクトリの下にあるディレクトリを返します。 yii\helpers\BaseFileHelper
findFiles() 指定されたディレクトリおよびサブディレクトリの下にあるファイルを返します。 yii\helpers\BaseFileHelper
getExtensionByMimeType() 指定されたMIMEタイプから最も一般的な拡張子を決定します。 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
loadMimeExtensions() 指定されたファイルから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

メソッド詳細

継承されたメソッドを隠す

changeOwnership() public static メソッド (バージョン2.0.43から利用可能)

定義元: yii\helpers\BaseFileHelper::changeOwnership()

ファイルまたはディレクトリのUnixユーザーおよび/またはグループの所有権、およびオプションでモードを変更します。

注意: この関数は、検査対象のファイルがサーバーのファイルシステムを介してアクセス可能である必要があるため、リモートファイルでは機能しません。注意: Windowsでは、通常のファイルに適用した場合、この関数は何もせずに失敗します。

public static void changeOwnership ( $path, $ownership, $mode null )
$path string

ファイルまたはディレクトリへのパス。

$ownership string|array|integer|null

ファイルまたはディレクトリのユーザーおよび/またはグループ所有権。$ownership が文字列の場合、形式は 'user:group' で、両方ともオプションです。例:'user' または 'user:' はユーザーのみを変更し、':group' はグループのみを変更し、'user:group' は両方を変更します。$owners がインデックス配列の場合、形式は [0 => user, 1 => group] です。例:[$myUser, $myGroup]。連想配列を渡すことも可能です。例:['user' => $myUser, 'group' => $myGroup]。$owners が整数の場合は、ユーザー ID として使用されます。null、空の配列、または空の文字列が渡された場合、所有権は変更されません。

$mode integer|null

ファイルまたはディレクトリに設定するパーミッション。null が渡された場合、モードは変更されません。

                public static function changeOwnership($path, $ownership, $mode = null)
{
    if (!file_exists((string)$path)) {
        throw new InvalidArgumentException('Unable to change ownership, "' . $path . '" is not a file or directory.');
    }
    if (empty($ownership) && $ownership !== 0 && $mode === null) {
        return;
    }
    $user = $group = null;
    if (!empty($ownership) || $ownership === 0 || $ownership === '0') {
        if (is_int($ownership)) {
            $user = $ownership;
        } elseif (is_string($ownership)) {
            $ownerParts = explode(':', $ownership);
            $user = $ownerParts[0];
            if (count($ownerParts) > 1) {
                $group = $ownerParts[1];
            }
        } elseif (is_array($ownership)) {
            $ownershipIsIndexed = ArrayHelper::isIndexed($ownership);
            $user = ArrayHelper::getValue($ownership, $ownershipIsIndexed ? 0 : 'user');
            $group = ArrayHelper::getValue($ownership, $ownershipIsIndexed ? 1 : 'group');
        } else {
            throw new InvalidArgumentException('$ownership must be an integer, string, array, or null.');
        }
    }
    if ($mode !== null) {
        if (!is_int($mode)) {
            throw new InvalidArgumentException('$mode must be an integer or null.');
        }
        if (!chmod($path, $mode)) {
            throw new Exception('Unable to change mode of "' . $path . '" to "0' . decoct($mode) . '".');
        }
    }
    if ($user !== null && $user !== '') {
        if (is_numeric($user)) {
            $user = (int) $user;
        } elseif (!is_string($user)) {
            throw new InvalidArgumentException('The user part of $ownership must be an integer, string, or null.');
        }
        if (!chown($path, $user)) {
            throw new Exception('Unable to change user ownership of "' . $path . '" to "' . $user . '".');
        }
    }
    if ($group !== null && $group !== '') {
        if (is_numeric($group)) {
            $group = (int) $group;
        } elseif (!is_string($group)) {
            throw new InvalidArgumentException('The group part of $ownership must be an integer, string or null.');
        }
        if (!chgrp($path, $group)) {
            throw new Exception('Unable to change group ownership of "' . $path . '" to "' . $group . '".');
        }
    }
}

            
copyDirectory() public static メソッド

定義: yii\helpers\BaseFileHelper::copyDirectory()

ディレクトリ全体を別のディレクトリとしてコピーします。

ファイルとサブディレクトリもコピーされます。

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: ディレクトリまたはファイルがコピーされます (「only」および「except」オプションは無視されます)。
    • false: ディレクトリまたはファイルはコピーされません (「only」および「except」オプションは無視されます)。
    • null: 「only」および「except」オプションが、ディレクトリまたはファイルをコピーするかどうかを決定します。
  • only: array, コピー対象となるファイルパスがマッチする必要のあるパターンのリスト。パスがパターンの文字列を末尾に含む場合、パスはパターンにマッチします。たとえば、「.php」は「.php」で終わるすべてのファイルパスにマッチします。注意: パターンの '/' 文字はパスの '/' と '\' の両方にマッチします。ファイルパスが「only」と「except」の両方のパターンにマッチする場合、コピーされません。
  • except: array, コピー対象から除外するファイルまたはディレクトリがマッチする必要のあるパターンのリスト。パスがパターンの文字列を末尾に含む場合、パスはパターンにマッチします。'/' で終わるパターンはディレクトリパスのみに適用され、'/' で終わらないパターンはファイルパスのみに適用されます。たとえば、「/a/b」は「/a/b」で終わるすべてのファイルパスにマッチし、「.svn/」は「.svn」で終わるディレクトリパスにマッチします。注意: パターンの '/' 文字はパスの '/' と '\' の両方にマッチします。
  • caseSensitive: boolean, 「only」または「except」で指定されたパターンを大文字と小文字を区別するかどうか。デフォルトは true です。
  • recursive: boolean, サブディレクトリ内のファイルもコピーするかどうか。デフォルトは true です。
  • beforeCopy: callback, 各サブディレクトリまたはファイルのコピー前に呼び出される PHP コールバック。コールバックが false を返す場合、サブディレクトリまたはファイルのコピー操作はキャンセルされます。コールバックの署名は次のようになります: function ($from, $to)。ここで、$from はコピー元のサブディレクトリまたはファイルで、$to はコピー先です。
  • afterCopy: callback, 各サブディレクトリまたはファイルが正常にコピーされた後に呼び出される PHP コールバック。コールバックの署名は次のようになります: function ($from, $to)。ここで、$from はコピー元のサブディレクトリまたはファイルで、$to はコピー先です。
  • copyEmptyDirectories: boolean, 空のディレクトリをコピーするかどうか。ファイルを含まないディレクトリの作成を避けるには、これを false に設定します。これは、最初にファイルを含まないディレクトリだけでなく、only または except を介してファイルがフィルタリングされたためにコピー先にファイルを含まないディレクトリにも影響します。デフォルトは true です。このオプションはバージョン 2.0.12 以降で利用可能です。2.0.12 より前では、空のディレクトリは常にコピーされていました。
throws yii\base\InvalidArgumentException

ディレクトリを開くことができない場合

                public static function copyDirectory($src, $dst, $options = [])
{
    $src = static::normalizePath($src);
    $dst = static::normalizePath($dst);
    if ($src === $dst || strpos($dst, $src . DIRECTORY_SEPARATOR) === 0) {
        throw new InvalidArgumentException('Trying to copy a directory to itself or a subdirectory.');
    }
    $dstExists = is_dir($dst);
    if (!$dstExists && (!isset($options['copyEmptyDirectories']) || $options['copyEmptyDirectories'])) {
        static::createDirectory($dst, isset($options['dirMode']) ? $options['dirMode'] : 0775, true);
        $dstExists = true;
    }
    $handle = opendir($src);
    if ($handle === false) {
        throw new InvalidArgumentException("Unable to open directory: $src");
    }
    if (!isset($options['basePath'])) {
        // this should be done only once
        $options['basePath'] = realpath($src);
        $options = static::normalizeOptions($options);
    }
    while (($file = readdir($handle)) !== false) {
        if ($file === '.' || $file === '..') {
            continue;
        }
        $from = $src . DIRECTORY_SEPARATOR . $file;
        $to = $dst . DIRECTORY_SEPARATOR . $file;
        if (static::filterPath($from, $options)) {
            if (isset($options['beforeCopy']) && !call_user_func($options['beforeCopy'], $from, $to)) {
                continue;
            }
            if (is_file($from)) {
                if (!$dstExists) {
                    // delay creation of destination directory until the first file is copied to avoid creating empty directories
                    static::createDirectory($dst, isset($options['dirMode']) ? $options['dirMode'] : 0775, true);
                    $dstExists = true;
                }
                copy($from, $to);
                if (isset($options['fileMode'])) {
                    @chmod($to, $options['fileMode']);
                }
            } else {
                // recursive copy, defaults to true
                if (!isset($options['recursive']) || $options['recursive']) {
                    static::copyDirectory($from, $to, $options);
                }
            }
            if (isset($options['afterCopy'])) {
                call_user_func($options['afterCopy'], $from, $to);
            }
        }
    }
    closedir($handle);
}

            
createDirectory() public static メソッド

定義: yii\helpers\BaseFileHelper::createDirectory()

新しいディレクトリを作成します。

このメソッドは PHP の mkdir() 関数に似ていますが、umask 設定の影響を回避するために、作成されたディレクトリのパーミッションを設定するために chmod() を使用します。

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

作成するディレクトリのパス。

$mode integer

作成されたディレクトリに設定するパーミッション。

$recursive boolean

存在しない親ディレクトリを作成するかどうか。

return boolean

ディレクトリが正常に作成されたかどうか

throws yii\base\Exception

ディレクトリを作成できなかった場合 (並列変更による PHP エラーなど)

                public static function createDirectory($path, $mode = 0775, $recursive = true)
{
    if (is_dir($path)) {
        return true;
    }
    $parentDir = dirname($path);
    // recurse if parent dir does not exist and we are not at the root of the file system.
    if ($recursive && !is_dir($parentDir) && $parentDir !== $path) {
        static::createDirectory($parentDir, $mode, true);
    }
    try {
        if (!mkdir($path, $mode)) {
            return false;
        }
    } catch (\Exception $e) {
        if (!is_dir($path)) {// https://github.com/yiisoft/yii2/issues/9288
            throw new \yii\base\Exception("Failed to create directory \"$path\": " . $e->getMessage(), $e->getCode(), $e);
        }
    }
    try {
        return chmod($path, $mode);
    } catch (\Exception $e) {
        throw new \yii\base\Exception("Failed to change permissions for directory \"$path\": " . $e->getMessage(), $e->getCode(), $e);
    }
}

            
filterPath() public static メソッド

定義: yii\helpers\BaseFileHelper::filterPath()

指定されたファイルパスがフィルタリングオプションを満たしているかどうかを確認します。

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

チェックするファイルまたはディレクトリのパス

$options array

フィルタリングオプション。サポートされているオプションの説明については、findFiles() を参照してください。

return boolean

ファイルまたはディレクトリがフィルタリングオプションを満たしているかどうか。

                public static function filterPath($path, $options)
{
    if (isset($options['filter'])) {
        $result = call_user_func($options['filter'], $path);
        if (is_bool($result)) {
            return $result;
        }
    }
    if (empty($options['except']) && empty($options['only'])) {
        return true;
    }
    $path = str_replace('\\', '/', $path);
    if (
        !empty($options['except'])
        && ($except = self::lastExcludeMatchingFromList($options['basePath'], $path, $options['except'])) !== null
    ) {
        return $except['flags'] & self::PATTERN_NEGATIVE;
    }
    if (!empty($options['only']) && !is_dir($path)) {
        return self::lastExcludeMatchingFromList($options['basePath'], $path, $options['only']) !== null;
    }
    return true;
}

            
findDirectories() public static メソッド (バージョン 2.0.14 以降で利用可能)

定義: yii\helpers\BaseFileHelper::findDirectories()

指定されたディレクトリおよびサブディレクトリの下にあるディレクトリを返します。

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

ファイルが検索されるディレクトリ。

$options array

ディレクトリ検索のオプション。有効なオプションは以下のとおりです。

  • filter: callback, 各ディレクトリまたはファイルに対して呼び出される PHP コールバック。コールバックの署名は次のようになります: function (string $path): bool。ここで、$path はフィルタリングするフルパスを示します。コールバックは次のいずれかの値を返すことができます。

    • true: ディレクトリが返されます。
    • false: ディレクトリは返されません。
  • recursive: boolean, サブディレクトリ内のファイルも検索するかどうか。デフォルトは true です。その他のオプションについては、findFiles() を参照してください。

return array

ディレクトリの下で見つかったディレクトリ。特定の順序はありません。順序は使用されるファイルシステムによって異なります。

throws yii\base\InvalidArgumentException

dir が無効な場合。

                public static function findDirectories($dir, $options = [])
{
    $dir = self::clearDir($dir);
    $options = self::setBasePath($dir, $options);
    $list = [];
    $handle = self::openDir($dir);
    while (($file = readdir($handle)) !== false) {
        if ($file === '.' || $file === '..') {
            continue;
        }
        $path = $dir . DIRECTORY_SEPARATOR . $file;
        if (is_dir($path) && static::filterPath($path, $options)) {
            $list[] = $path;
            if (!isset($options['recursive']) || $options['recursive']) {
                $list = array_merge($list, static::findDirectories($path, $options));
            }
        }
    }
    closedir($handle);
    return $list;
}

            
findFiles() public static メソッド

定義: yii\helpers\BaseFileHelper::findFiles()

指定されたディレクトリおよびサブディレクトリの下にあるファイルを返します。

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

ファイルが検索されるディレクトリ。

$options array

ファイル検索のオプション。有効なオプションは以下のとおりです。

  • filter: callback, 各ディレクトリまたはファイルに対して呼び出される PHP コールバック。コールバックの署名は次のようになります: function ($path)。ここで、$path はフィルタリングするフルパスを示します。コールバックは次のいずれかの値を返すことができます。

    • true: ディレクトリまたはファイルが返されます (only および except オプションは無視されます)。
    • false: ディレクトリまたはファイルは返されません (only および except オプションは無視されます)。
    • null: only および except オプションが、ディレクトリまたはファイルを返すかどうかを決定します。
  • except: array, 結果から除外するファイルまたはディレクトリパスにマッチするパターンのリスト。スラッシュ ('/') で終わるパターンはディレクトリパスのみに適用され、'/' で終わらないパターンはファイルパスのみに適用されます。たとえば、「/a/b」は「/a/b」で終わるすべてのファイルパスにマッチし、.svn/.svn で終わるディレクトリパスにマッチします。パターンにスラッシュ (/) が含まれていない場合、シェルグロブパターンとして扱われ、$dir を基準としたパス名との一致がチェックされます。それ以外の場合、パターンは fnmatch(3)FNM_PATHNAME フラグとともに使用するのに適したシェルグロブとして扱われます。パターンのワイルドカードは、パス名の / にはマッチしません。たとえば、views/*.phpviews/index.php にはマッチしますが、views/controller/index.php にはマッチしません。先頭のスラッシュはパス名の先頭にマッチします。たとえば、/*.phpindex.php にはマッチしますが、views/start/index.php にはマッチしません。オプションのプレフィックス ! はパターンを否定します。以前のパターンによって除外されたマッチングファイルは再び含まれるようになります。否定されたパターンがマッチする場合、これはより低い優先度のパターンのソースをオーバーライドします。リテラルの ! で始まるパターンには、最初の ! の前にバックスラッシュ (\) を入力してください。たとえば、\!important!.txt です。注意: パターンの '/' 文字はパスの '/' と '\' の両方にマッチします。gitignore パターン形式の詳細については、こちらを参照してください。
  • only: 配列。返されるファイルのパスがマッチすべきパターンのリストです。ディレクトリパスはこれに対してチェックされません。exceptオプションと同じパターンマッチングルールが使用されます。ファイルパスがonlyexceptの両方のパターンにマッチする場合、それは返されません。
  • caseSensitive: 真偽値。onlyまたはexceptで指定されたパターンが大文字と小文字を区別するかどうかを示します。デフォルトはtrueです。
  • recursive: 真偽値。サブディレクトリ内のファイルも検索するかどうかを示します。デフォルトはtrueです。
return array

ディレクトリ内で見つかったファイルです。特定の順序はありません。順序は使用されるファイルシステムによって異なります。

throws yii\base\InvalidArgumentException

dir が無効な場合。

                public static function findFiles($dir, $options = [])
{
    $dir = self::clearDir($dir);
    $options = self::setBasePath($dir, $options);
    $list = [];
    $handle = self::openDir($dir);
    while (($file = readdir($handle)) !== false) {
        if ($file === '.' || $file === '..') {
            continue;
        }
        $path = $dir . DIRECTORY_SEPARATOR . $file;
        if (static::filterPath($path, $options)) {
            if (is_file($path)) {
                $list[] = $path;
            } elseif (is_dir($path) && (!isset($options['recursive']) || $options['recursive'])) {
                $list = array_merge($list, static::findFiles($path, $options));
            }
        }
    }
    closedir($handle);
    return $list;
}

            
getExtensionByMimeType() public static method (バージョン 2.0.48 から利用可能)

定義元: yii\helpers\BaseFileHelper::getExtensionByMimeType()

指定されたMIMEタイプから最も一般的な拡張子を決定します。

このメソッドは、MIMEタイプと拡張子名の間のローカルマップを使用します。

public static string|null getExtensionByMimeType ( $mimeType, $preferShort false, $magicFile null )
$mimeType string

ファイルのMIMEタイプ。

$preferShort boolean

最大3文字の拡張子を返します。

$magicFile string|null

利用可能なすべてのMIMEタイプ情報を含むファイルのパス(またはエイリアス)。これが設定されていない場合、$mimeMagicFileで指定されたファイルが使用されます。

return string|null

指定されたMIMEタイプに対応する拡張子

                public static function getExtensionByMimeType($mimeType, $preferShort = false, $magicFile = null)
{
    $aliases = static::loadMimeAliases(static::$mimeAliasesFile);
    if (isset($aliases[$mimeType])) {
        $mimeType = $aliases[$mimeType];
    }
    $mimeExtensions = static::loadMimeExtensions($magicFile);
    if (!array_key_exists($mimeType, $mimeExtensions)) {
        return null;
    }
    $extensions = $mimeExtensions[$mimeType];
    if (is_array($extensions)) {
        if ($preferShort) {
            foreach ($extensions as $extension) {
                if (mb_strlen($extension, 'UTF-8') <= 3) {
                    return $extension;
                }
            }
        }
        return $extensions[0];
    } else {
        return $extensions;
    }
}

            
getExtensionsByMimeType() public static method

定義元: yii\helpers\BaseFileHelper::getExtensionsByMimeType()

指定されたMIMEタイプから拡張子を決定します。

このメソッドは、拡張子名とMIMEタイプの間のローカルマップを使用します。

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

ファイルのMIMEタイプ。

$magicFile string|null

利用可能なすべてのMIMEタイプ情報を含むファイルのパス(またはエイリアス)。これが設定されていない場合、$mimeMagicFileで指定されたファイルが使用されます。

return array

指定されたMIMEタイプに対応する拡張子

                public static function getExtensionsByMimeType($mimeType, $magicFile = null)
{
    $aliases = static::loadMimeAliases(static::$mimeAliasesFile);
    if (isset($aliases[$mimeType])) {
        $mimeType = $aliases[$mimeType];
    }
    // Note: For backwards compatibility the "MimeTypes" file is used.
    $mimeTypes = static::loadMimeTypes($magicFile);
    return array_keys($mimeTypes, mb_strtolower($mimeType, 'UTF-8'), true);
}

            
getMimeType() public static method

定義元: yii\helpers\BaseFileHelper::getMimeType()

指定されたファイルのMIMEタイプを決定します。

このメソッドは、最初にfinfo_openに基づいてMIMEタイプを決定しようとします。fileinfo拡張機能がインストールされていない場合、$checkExtensionがtrueの場合、getMimeTypeByExtension()にフォールバックします。

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

ファイル名。

$magicFile string|null

オプションのmagicデータベースファイル(またはエイリアス)の名前。通常は/path/to/magic.mimeのようなものです。これは、fileinfo拡張機能がインストールされている場合、finfo_open()の2番目のパラメータとして渡されます。MIMEタイプがgetMimeTypeByExtension()を介して決定され、これがnullの場合、$mimeMagicFileで指定されたファイルを使用します。

$checkExtension boolean

finfo_open()で決定できない場合に、ファイル拡張子を使用してMIMEタイプを決定するかどうか。

return string|null

MIMEタイプ(例:text/plain)。MIMEタイプを決定できない場合はnullが返されます。

throws yii\base\InvalidConfigException

fileinfo PHP拡張機能がインストールされておらず、$checkExtensionfalseの場合。

                public static function getMimeType($file, $magicFile = null, $checkExtension = true)
{
    if ($magicFile !== null) {
        $magicFile = Yii::getAlias($magicFile);
    }
    if (!extension_loaded('fileinfo')) {
        if ($checkExtension) {
            return static::getMimeTypeByExtension($file, $magicFile);
        }
        throw new InvalidConfigException('The fileinfo PHP extension is not installed.');
    }
    $info = finfo_open(FILEINFO_MIME_TYPE, $magicFile);
    if ($info) {
        $result = finfo_file($info, $file);
        finfo_close($info);
        if ($result !== false) {
            return $result;
        }
    }
    return $checkExtension ? static::getMimeTypeByExtension($file, $magicFile) : null;
}

            
getMimeTypeByExtension() public static method

定義元: yii\helpers\BaseFileHelper::getMimeTypeByExtension()

指定されたファイルの拡張子名に基づいてMIMEタイプを決定します。

このメソッドは、拡張子名とMIMEタイプの間のローカルマップを使用します。

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

ファイル名。

$magicFile string|null

利用可能なすべてのMIMEタイプ情報を含むファイルのパス(またはエイリアス)。これが設定されていない場合、$mimeMagicFileで指定されたファイルが使用されます。

return string|null

MIMEタイプ。MIMEタイプを決定できない場合はnullが返されます。

                public static function getMimeTypeByExtension($file, $magicFile = null)
{
    $mimeTypes = static::loadMimeTypes($magicFile);
    if (($ext = pathinfo($file, PATHINFO_EXTENSION)) !== '') {
        $ext = strtolower($ext);
        if (isset($mimeTypes[$ext])) {
            return $mimeTypes[$ext];
        }
    }
    return null;
}

            
loadMimeAliases() protected static method (バージョン 2.0.14 から利用可能)

定義元: yii\helpers\BaseFileHelper::loadMimeAliases()

指定されたファイルからMIMEエイリアスをロードします。

protected static array loadMimeAliases ( $aliasesFile )
$aliasesFile string|null

MIMEタイプエイリアスを含むファイルのパス(またはエイリアス)。これが設定されていない場合、$mimeAliasesFileで指定されたファイルが使用されます。

return array

ファイル拡張子からMIMEタイプへのマッピング

                protected static function loadMimeAliases($aliasesFile)
{
    if ($aliasesFile === null) {
        $aliasesFile = static::$mimeAliasesFile;
    }
    $aliasesFile = Yii::getAlias($aliasesFile);
    if (!isset(self::$_mimeAliases[$aliasesFile])) {
        self::$_mimeAliases[$aliasesFile] = require $aliasesFile;
    }
    return self::$_mimeAliases[$aliasesFile];
}

            
loadMimeExtensions() protected static method (バージョン 2.0.48 から利用可能)

定義元: yii\helpers\BaseFileHelper::loadMimeExtensions()

指定されたファイルからMIME拡張子をロードします。

protected static array loadMimeExtensions ( $extensionsFile )
$extensionsFile string|null

MIMEタイプエイリアスを含むファイルのパス(またはエイリアス)。これが設定されていない場合、$mimeAliasesFileで指定されたファイルが使用されます。

return array

ファイル拡張子からMIMEタイプへのマッピング

                protected static function loadMimeExtensions($extensionsFile)
{
    if ($extensionsFile === null) {
        $extensionsFile = static::$mimeExtensionsFile;
    }
    $extensionsFile = Yii::getAlias($extensionsFile);
    if (!isset(self::$_mimeExtensions[$extensionsFile])) {
        self::$_mimeExtensions[$extensionsFile] = require $extensionsFile;
    }
    return self::$_mimeExtensions[$extensionsFile];
}

            
loadMimeTypes() protected static method

定義元: yii\helpers\BaseFileHelper::loadMimeTypes()

指定されたファイルからMIMEタイプをロードします。

protected static array loadMimeTypes ( $magicFile )
$magicFile string|null

利用可能なすべてのMIMEタイプ情報を含むファイルのパス(またはエイリアス)。これが設定されていない場合、$mimeMagicFileで指定されたファイルが使用されます。

return array

ファイル拡張子からMIMEタイプへのマッピング

                protected static function loadMimeTypes($magicFile)
{
    if ($magicFile === null) {
        $magicFile = static::$mimeMagicFile;
    }
    $magicFile = Yii::getAlias($magicFile);
    if (!isset(self::$_mimeTypes[$magicFile])) {
        self::$_mimeTypes[$magicFile] = require $magicFile;
    }
    return self::$_mimeTypes[$magicFile];
}

            
localize() public static method

定義元: yii\helpers\BaseFileHelper::localize()

指定されたファイルのローカライズされたバージョンを返します。

検索は、指定された言語コードに基づいています。具体的には、言語コードと同じ名前のサブディレクトリの下に、同じ名前のファイルが検索されます。例えば、ファイル "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|null

ファイルがローカライズされるターゲット言語。設定されていない場合、yii\base\Application::$languageの値が使用されます。

$sourceLanguage string|null

元のファイルの言語。設定されていない場合、yii\base\Application::$sourceLanguageの値が使用されます。

return string

一致するローカライズされたファイル。ローカライズされたバージョンが見つからない場合は、元のファイル。ターゲット言語コードとソース言語コードが同じ場合、元のファイルが返されます。

                public static function localize($file, $language = null, $sourceLanguage = null)
{
    if ($language === null) {
        $language = Yii::$app->language;
    }
    if ($sourceLanguage === null) {
        $sourceLanguage = Yii::$app->sourceLanguage;
    }
    if ($language === $sourceLanguage) {
        return $file;
    }
    $desiredFile = dirname($file) . DIRECTORY_SEPARATOR . $language . DIRECTORY_SEPARATOR . basename($file);
    if (is_file($desiredFile)) {
        return $desiredFile;
    }
    $language = substr($language, 0, 2);
    if ($language === $sourceLanguage) {
        return $file;
    }
    $desiredFile = dirname($file) . DIRECTORY_SEPARATOR . $language . DIRECTORY_SEPARATOR . basename($file);
    return is_file($desiredFile) ? $desiredFile : $file;
}

            
normalizeOptions() protected static method (バージョン 2.0.12 から利用可能)
protected static array normalizeOptions ( array $options )
$options array

未加工のオプション

return array

正規化されたオプション

                protected static function normalizeOptions(array $options)
{
    if (!array_key_exists('caseSensitive', $options)) {
        $options['caseSensitive'] = true;
    }
    if (isset($options['except'])) {
        foreach ($options['except'] as $key => $value) {
            if (is_string($value)) {
                $options['except'][$key] = self::parseExcludePattern($value, $options['caseSensitive']);
            }
        }
    }
    if (isset($options['only'])) {
        foreach ($options['only'] as $key => $value) {
            if (is_string($value)) {
                $options['only'][$key] = self::parseExcludePattern($value, $options['caseSensitive']);
            }
        }
    }
    return $options;
}

            
normalizePath() public static method

定義場所: yii\helpers\BaseFileHelper::normalizePath()

ファイル/ディレクトリパスを正規化します。

正規化は、次の処理を行います。

  • すべてのディレクトリセパレータを DIRECTORY_SEPARATOR に変換します (例: "\a/b\c" は "/a/b/c" になります)
  • 末尾のディレクトリセパレータを削除します (例: "/a/b/c/" は "/a/b/c" になります)
  • 複数の連続するスラッシュを1つにまとめます (例: "/a///b/c" は "/a/b/c" になります)
  • ".." と "." をそれらの意味に基づいて削除します (例: "/a/./b/../c" は "/a/c" になります)

注: 登録されたストリームラッパーの場合、連続するスラッシュの規則と ".."/"." の変換はスキップされます。

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

正規化するファイル/ディレクトリパス

$ds string

正規化された結果で使用するディレクトリセパレータ。デフォルトは DIRECTORY_SEPARATOR です。

return string

正規化されたファイル/ディレクトリパス

                public static function normalizePath($path, $ds = DIRECTORY_SEPARATOR)
{
    $path = rtrim(strtr($path, '/\\', $ds . $ds), $ds);
    if (strpos($ds . $path, "{$ds}.") === false && strpos($path, "{$ds}{$ds}") === false) {
        return $path;
    }
    // fix #17235 stream wrappers
    foreach (stream_get_wrappers() as $protocol) {
        if (strpos($path, "{$protocol}://") === 0) {
            return $path;
        }
    }
    // the path may contain ".", ".." or double slashes, need to clean them up
    if (strpos($path, "{$ds}{$ds}") === 0 && $ds == '\\') {
        $parts = [$ds];
    } else {
        $parts = [];
    }
    foreach (explode($ds, $path) as $part) {
        if ($part === '..' && !empty($parts) && end($parts) !== '..') {
            array_pop($parts);
        } elseif ($part === '.' || $part === '' && !empty($parts)) {
            continue;
        } else {
            $parts[] = $part;
        }
    }
    $path = implode($ds, $parts);
    return $path === '' ? '.' : $path;
}

            
removeDirectory() public static method

定義場所: yii\helpers\BaseFileHelper::removeDirectory()

ディレクトリ(およびそのすべてのコンテンツ)を再帰的に削除します。

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

再帰的に削除するディレクトリ。

$options array

ディレクトリ削除のオプション。有効なオプションは次のとおりです。

  • traverseSymlinks: 真偽値。ディレクトリへのシンボリックリンクもトラバースするかどうか。デフォルトは false であり、シンボリックリンクされたディレクトリの内容は削除されないことを意味します。デフォルトの場合、シンボリックリンクのみが削除されます。
throws yii\base\ErrorException

失敗した場合

                public static function removeDirectory($dir, $options = [])
{
    if (!is_dir($dir)) {
        return;
    }
    if (!empty($options['traverseSymlinks']) || !is_link($dir)) {
        if (!($handle = opendir($dir))) {
            return;
        }
        while (($file = readdir($handle)) !== false) {
            if ($file === '.' || $file === '..') {
                continue;
            }
            $path = $dir . DIRECTORY_SEPARATOR . $file;
            if (is_dir($path)) {
                static::removeDirectory($path, $options);
            } else {
                static::unlink($path);
            }
        }
        closedir($handle);
    }
    if (is_link($dir)) {
        static::unlink($dir);
    } else {
        rmdir($dir);
    }
}

            
unlink() public static method (バージョン 2.0.14 から利用可能)

定義場所: yii\helpers\BaseFileHelper::unlink()

クロスプラットフォームな方法でファイルまたはシンボリックリンクを削除します。

public static boolean unlink ( $path )
$path string