CFileHelper
鍖 | system.utils |
---|---|
缁ф壙 | class CFileHelper |
婧愯嚜 | 1.0 |
鐗堟湰 | $Id: CFileHelper.php 3289 2011-06-18 21:20:13Z qiang.xue $ |
婧愮爜 | framework/utils/CFileHelper.php |
CFileHelper鎻愪緵浜嗕竴绯诲垪鐢ㄤ簬甯哥敤鐨勬枃浠剁郴缁熸搷浣滅殑鍔╂墜鏂规硶銆
鍏叡鏂规硶
鏂规硶 | 鎻忚堪 | 瀹氫箟鍦 |
---|---|---|
copyDirectory() | 閫掑綊鍦板皢涓涓洰褰曡繘琛屽鍒躲 | CFileHelper |
findFiles() | 杩斿洖鎸囧畾鐨勭洰褰曞拰鍏跺瓙鐩綍涓嬬殑鏂囦欢銆 | CFileHelper |
getExtension() | 杩斿洖涓涓寘鍚矾寰勭殑鏂囦欢鍚嶇殑鎵╁睍鍚嶃 | CFileHelper |
getMimeType() | 纭畾鎸囧畾鏂囦欢鐨 MIME 绫诲瀷銆 | CFileHelper |
getMimeTypeByExtension() | 鏍规嵁缁欏畾鏂囦欢鐨勬墿灞曞悕纭畾瀹冪殑MIME绫诲瀷銆 | CFileHelper |
鍙椾繚鎶ゆ柟娉
鏂规硶 | 鎻忚堪 | 瀹氫箟鍦 |
---|---|---|
copyDirectoryRecursive() | 澶嶅埗涓涓洰褰曘 | CFileHelper |
findFilesRecursive() | 杩斿洖鎸囧畾鐩綍鍜屽畠鐨勫瓙鐩綍涓嬬殑鏂囦欢銆 | CFileHelper |
validatePath() | 楠岃瘉涓涓枃浠舵垨鐩綍銆 | CFileHelper |
鏂规硶璇︾粏
copyDirectory()
鏂规硶
public static void copyDirectory(string $src, string $dst, array $options=array (
))
| ||
$src | string | 婧愮洰褰 |
$dst | string | 鐩爣鐩綍 |
$options | array | 杩涜鐩綍澶嶅埗鏃朵娇鐢ㄧ殑閫夐」銆傚彲鐢ㄩ夐」鍖呮嫭锛
|
婧愮爜锛 framework/utils/CFileHelper.php#53 (鏄剧ず)
public static function copyDirectory($src,$dst,$options=array())
{
$fileTypes=array();
$exclude=array();
$level=-1;
extract($options);
self::copyDirectoryRecursive($src,$dst,'',$fileTypes,$exclude,$level,$options);
}
閫掑綊鍦板皢涓涓洰褰曡繘琛屽鍒躲 濡傛灉鐩爣鐩綍涓嶅瓨鍦紝瀹冨皢琚垱寤恒
copyDirectoryRecursive()
鏂规硶
protected static void copyDirectoryRecursive(string $src, string $dst, string $base, array $fileTypes, array $exclude, integer $level, array $options)
| ||
$src | string | 婧愮洰褰 |
$dst | string | 鐩爣鐩綍 |
$base | string | 婧愮洰褰曠殑鍩哄噯璺緞 |
$fileTypes | array | 鏂囦欢鎵╁睍鍚嶅垪琛紙涓嶅惈鐐瑰彿锛夈傚彧鏈夋墿灞曞悕琚寘鍚湪姝ゅ垪琛ㄤ腑鐨勬枃浠惰杩斿洖銆 |
$exclude | array | 鐩綍鍜屾枃浠剁殑鎺掗櫎椤瑰垪琛ㄣ傛瘡涓帓闄ら」鍙互鏄竴涓悕瀛楁垨涓涓矾寰勩 濡傛灉涓涓枃浠舵垨涓涓矾寰勪笌涓涓帓闄ら」鐩稿尮閰嶏紝瀹冨皢涓嶄細琚繑鍥炪備緥濡傦紝涓涓帓闄ら」 '.svn' 灏嗘妸鍚嶄负 '.svn' 鐨勬枃浠舵垨鐩綍鎺掗櫎銆備竴涓帓闄ら」 '/a/b' 灏嗘帓闄ゆ枃浠舵垨鐩綍 '$src/a/b'銆 娉ㄦ剰锛氫笉绠IRECTORY_SEPARATOR甯搁噺鐨勫兼槸浠涔堬紝閮戒娇鐢'/' 绗﹀彿浣滀负鍒嗛殧绗︺ |
$level | integer | 閫掑綊娣卞害锛岄粯璁ゅ间负-1銆 Level -1 琛ㄧず澶嶅埗姝ょ洰褰曚笅鐨勬墍鏈夊瓙鐩綍鍜屾枃浠讹紱 Level 0 琛ㄧず浠呰〃绀烘鐩綍涓嬬殑鏂囦欢锛 level N 琛ㄧず澶嶅埗鍒扮N灞傚瓙鐩綍銆 |
$options | array | 闄勫姞閫夐」銆傚彲鐢ㄩ夐」鍖呮嫭锛 newDirMode - 涓虹洰鏍囩洰褰曡瀹氱殑鏉冮檺锛堥粯璁ゅ间负 0777锛夛紱 newFileMode - 涓哄鍒剁殑鐩爣鏂囦欢璁剧疆鐨勬潈闄愶紙榛樿鍊间负褰撳墠鐜鐨勯粯璁よ缃級銆 |
婧愮爜锛 framework/utils/CFileHelper.php#111 (鏄剧ず)
protected static function copyDirectoryRecursive($src,$dst,$base,$fileTypes,$exclude,$level,$options)
{
if(!is_dir($dst))
mkdir($dst);
if(isset($options['newDirMode']))
@chmod($dst,$options['newDirMode']);
else
@chmod($dst,0777);
$folder=opendir($src);
while(($file=readdir($folder))!==false)
{
if($file==='.' || $file==='..')
continue;
$path=$src.DIRECTORY_SEPARATOR.$file;
$isFile=is_file($path);
if(self::validatePath($base,$file,$isFile,$fileTypes,$exclude))
{
if($isFile)
{
copy($path,$dst.DIRECTORY_SEPARATOR.$file);
if(isset($options['newFileMode']))
@chmod($dst.DIRECTORY_SEPARATOR.$file, $options['newFileMode']);
}
else if($level)
self::copyDirectoryRecursive($path,$dst.DIRECTORY_SEPARATOR.$file,$base.'/'.$file,$fileTypes,$exclude,$level-1,$options);
}
}
closedir($folder);
}
澶嶅埗涓涓洰褰曘 姝ゆ柟娉曚富瑕佽copyDirectory璋冪敤銆
findFiles()
鏂规硶
public static array findFiles(string $dir, array $options=array (
))
| ||
$dir | string | 闇瑕佹煡鎵剧殑鐩綍 |
$options | array | 鏂囦欢鎼滅储鐨勯夐」銆傚彲鐢ㄧ殑閫夐」鍖呮嫭锛
|
{return} | array | 鍦ㄦ鐩綍涓嬫壘鍒扮殑鏂囦欢銆傛枃浠剁殑鍒楄〃宸茬粡杩囨帓搴忋 |
婧愮爜锛 framework/utils/CFileHelper.php#81 (鏄剧ず)
public static function findFiles($dir,$options=array())
{
$fileTypes=array();
$exclude=array();
$level=-1;
extract($options);
$list=self::findFilesRecursive($dir,'',$fileTypes,$exclude,$level);
sort($list);
return $list;
}
杩斿洖鎸囧畾鐨勭洰褰曞拰鍏跺瓙鐩綍涓嬬殑鏂囦欢銆
findFilesRecursive()
鏂规硶
protected static array findFilesRecursive(string $dir, string $base, array $fileTypes, array $exclude, integer $level)
| ||
$dir | string | 婧愮洰褰 |
$base | string | 婧愮洰褰曠殑鍩哄噯璺緞 |
$fileTypes | array | 鏂囦欢鎵╁睍鍚嶅垪琛紙涓嶅惈鐐瑰彿锛夈傚彧鏈夋墿灞曞悕琚寘鍚湪姝ゅ垪琛ㄤ腑鐨勬枃浠惰杩斿洖銆 |
$exclude | array | 鐩綍鍜屾枃浠剁殑鎺掗櫎椤瑰垪琛ㄣ傛瘡涓帓闄ら」鍙互鏄竴涓悕瀛楁垨涓涓矾寰勩 濡傛灉涓涓枃浠舵垨涓涓矾寰勪笌涓涓帓闄ら」鐩稿尮閰嶏紝瀹冨皢涓嶄細琚繑鍥炪備緥濡傦紝涓涓帓闄ら」 '.svn' 灏嗘妸鍚嶄负 '.svn' 鐨勬枃浠舵垨鐩綍鎺掗櫎銆備竴涓帓闄ら」 '/a/b' 灏嗘帓闄ゆ枃浠舵垨鐩綍 '$src/a/b'銆 娉ㄦ剰锛氫笉绠IRECTORY_SEPARATOR甯搁噺鐨勫兼槸浠涔堬紝閮戒娇鐢'/' 绗﹀彿浣滀负鍒嗛殧绗︺ |
$level | integer | 閫掑綊娣卞害锛岄粯璁ゅ间负-1銆 Level -1 琛ㄧず澶嶅埗姝ょ洰褰曚笅鐨勬墍鏈夊瓙鐩綍鍜屾枃浠讹紱 Level 0 琛ㄧず浠呰〃绀烘鐩綍涓嬬殑鏂囦欢锛 level N 琛ㄧず澶嶅埗鍒扮N灞傚瓙鐩綍銆 |
{return} | array | 姝ょ洰褰曚笅鐨勬枃浠 |
婧愮爜锛 framework/utils/CFileHelper.php#158 (鏄剧ず)
protected static function findFilesRecursive($dir,$base,$fileTypes,$exclude,$level)
{
$list=array();
$handle=opendir($dir);
while(($file=readdir($handle))!==false)
{
if($file==='.' || $file==='..')
continue;
$path=$dir.DIRECTORY_SEPARATOR.$file;
$isFile=is_file($path);
if(self::validatePath($base,$file,$isFile,$fileTypes,$exclude))
{
if($isFile)
$list[]=$path;
else if($level)
$list=array_merge($list,self::findFilesRecursive($path,$base.'/'.$file,$fileTypes,$exclude,$level-1));
}
}
closedir($handle);
return $list;
}
杩斿洖鎸囧畾鐩綍鍜屽畠鐨勫瓙鐩綍涓嬬殑鏂囦欢銆 姝ゆ柟娉曚富瑕佽findFiles璋冪敤銆
getExtension()
鏂规硶
锛堝彲鐢ㄨ嚜 v1.1.2锛
public static string getExtension(string $path)
| ||
$path | string | 鏂囦欢璺緞 |
{return} | string | 涓嶅寘鍚偣鍙风殑鎵╁睍鍚 |
婧愮爜锛 framework/utils/CFileHelper.php#28 (鏄剧ず)
public static function getExtension($path)
{
return pathinfo($path, PATHINFO_EXTENSION);
}
杩斿洖涓涓寘鍚矾寰勭殑鏂囦欢鍚嶇殑鎵╁睍鍚嶃 渚嬪锛屸減ath/to/something.php鈥濆皢杩斿洖鈥減hp鈥濄
getMimeType()
鏂规硶
public static string getMimeType(string $file, string $magicFile=NULL, boolean $checkExtension=true)
| ||
$file | string | 鏂囦欢鍚 |
$magicFile | string | 榄旀湳鏁版嵁搴撴枃浠跺悕锛岄氬父绫讳技浜 /path/to/magic.mime銆 瀹冨皢浣滀负绗簩涓弬鏁颁紶閫掔粰finfo_open銆 姝ゅ弬鏁颁粠1.1.3鐗堝紑濮嬪彲鐢ㄣ |
$checkExtension | boolean | 褰揗IME绫诲瀷涓嶈兘渚濇嵁finfo鍜宮im_content_type纭畾鏃 鏄惁妫娴嬫枃浠舵墿灞曞悕銆傞粯璁ゅ兼槸true銆傛鍙傛暟浠1.1.3鐗堝紑濮嬪彲鐢ㄣ |
{return} | string | MIME绫诲瀷銆傚綋MIME绫诲瀷鏃犳硶纭畾鏃惰繑鍥濶ull銆 |
婧愮爜锛 framework/utils/CFileHelper.php#223 (鏄剧ず)
public static function getMimeType($file,$magicFile=null,$checkExtension=true)
{
if(function_exists('finfo_open'))
{
$options=defined('FILEINFO_MIME_TYPE') ? FILEINFO_MIME_TYPE : FILEINFO_MIME;
$info=$magicFile===null ? finfo_open($options) : finfo_open($options,$magicFile);
if($info && ($result=finfo_file($info,$file))!==false)
return $result;
}
if(function_exists('mime_content_type') && ($result=mime_content_type($file))!==false)
return $result;
return $checkExtension ? self::getMimeTypeByExtension($file) : null;
}
纭畾鎸囧畾鏂囦欢鐨 MIME 绫诲瀷銆 姝ゆ柟娉曟寜涓嬪垪椤哄簭渚濇灏濊瘯锛
- finfo
- mime_content_type
- getMimeTypeByExtension, 褰 $checkExtension 琚缃负true銆
getMimeTypeByExtension()
鏂规硶
public static string getMimeTypeByExtension(string $file, string $magicFile=NULL)
| ||
$file | string | 鏂囦欢鍚 |
$magicFile | string | 鍖呭惈浜嗘墍鏈夋湁鏁堢殑MIME绫诲瀷淇℃伅鐨勬枃浠剁殑璺緞 濡傛灉娌℃湁璁剧疆锛屽皢浣跨敤榛樿鍊 'system.utils.mimeTypes' 鏂囦欢銆 姝ゅ弬鏁颁粠1.1.3鐗堝紑濮嬪彲鐢ㄣ |
{return} | string | MIME绫诲瀷銆傚綋MIME绫诲瀷鏃犳硶纭畾鏃惰繑鍥濶ull銆 |
婧愮爜锛 framework/utils/CFileHelper.php#249 (鏄剧ず)
public static function getMimeTypeByExtension($file,$magicFile=null)
{
static $extensions;
if($extensions===null)
$extensions=$magicFile===null ? require(Yii::getPathOfAlias('system.utils.mimeTypes').'.php') : $magicFile;
if(($ext=pathinfo($file, PATHINFO_EXTENSION))!=='')
{
$ext=strtolower($ext);
if(isset($extensions[$ext]))
return $extensions[$ext];
}
return null;
}
鏍规嵁缁欏畾鏂囦欢鐨勬墿灞曞悕纭畾瀹冪殑MIME绫诲瀷銆 姝ゆ柟娉曚娇鐢ㄤ簡涓涓湰鍦扮殑鎵╁睍鍚嶄笌MIME绫诲瀷鐨勬槧灏勩
validatePath()
鏂规硶
protected static boolean validatePath(string $base, string $file, boolean $isFile, array $fileTypes, array $exclude)
| ||
$base | string | 婧愮洰褰曠殑鍩哄噯璺緞 |
$file | string | 鏂囦欢鎴栫洰褰曠殑鍚嶅瓧 |
$isFile | boolean | 鏄惁鏄竴涓枃浠 |
$fileTypes | array | 鏂囦欢鎵╁睍鍚嶅垪琛紙涓嶅惈鐐瑰彿锛夈傚彧鏈夋墿灞曞悕琚寘鍚湪姝ゅ垪琛ㄤ腑鐨勬枃浠惰楠岃瘉銆 |
$exclude | array | 鐩綍鍜屾枃浠剁殑鎺掗櫎椤瑰垪琛ㄣ傛瘡涓帓闄ら」鍙互鏄竴涓悕瀛楁垨涓涓矾寰勩 濡傛灉涓涓枃浠舵垨涓涓矾寰勪笌涓涓帓闄ら」鐩稿尮閰嶏紝瀹冨皢涓嶄細琚獙璇併備緥濡傦紝涓涓帓闄ら」 '.svn' 灏嗘妸鍚嶄负 '.svn' 鐨勬枃浠舵垨鐩綍鎺掗櫎銆備竴涓帓闄ら」 '/a/b' 灏嗘帓闄ゆ枃浠舵垨鐩綍 '$src/a/b'銆 娉ㄦ剰锛氫笉绠IRECTORY_SEPARATOR甯搁噺鐨勫兼槸浠涔堬紝閮戒娇鐢'/' 绗﹀彿浣滀负鍒嗛殧绗︺ |
{return} | boolean | 姝ゆ枃浠舵垨鐩綍鏄惁鏈夋晥 |
婧愮爜锛 framework/utils/CFileHelper.php#192 (鏄剧ず)
protected static function validatePath($base,$file,$isFile,$fileTypes,$exclude)
{
foreach($exclude as $e)
{
if($file===$e || strpos($base.'/'.$file,$e)===0)
return false;
}
if(!$isFile || empty($fileTypes))
return true;
if(($type=pathinfo($file, PATHINFO_EXTENSION))!=='')
return in_array($type,$fileTypes);
else
return false;
}
楠岃瘉涓涓枃浠舵垨鐩綍銆