概述
<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006~2016 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------
namespace think;
use SplFileInfo;// Spl 文件信息 类库
use SplFileObject;// Spl 文件对象 类库
// Spl 一个需要面对的问题
class File extends SplFileObject
{// 文件 继承 SplFileObject 对象
/**
* 错误信息
* @var string
*/
private $error = '';// 错误信息存储
// 当前完整文件名
protected $filename;// 当前完整的文件名 信息
// 上传文件名
protected $saveName;// 上传 文件名
// 文件上传命名规则
protected $rule = 'date';// 文件上传的 命名规则
// 文件上传验证规则
protected $validate = [];// 文件上传 验证规则
// 单元测试
protected $isTest;// 单元测试
// 上传文件信息
protected $info;// 上传文件信息
// 文件hash信息
protected $hash = [];// 文件 hash 信息
public function __construct($filename, $mode = 'r')// 结构体
{
parent::__construct($filename, $mode);// 函数 构造体 父亲的
$this->filename = $this->getRealPath();// 获取 文件名称
}
/**
* 是否测试
* @param bool $test 是否测试
* @return $this
*/
public function isTest($test = false)
{
$this->isTest = $test;// 是否测试信息
return $this;
}
/**
* 设置上传信息
* @param array $info 上传文件信息
* @return $this
*/
public function setUploadInfo($info)
{
$this->info = $info;// 设置 上传文件信息
return $this;
}
/**
* 获取上传文件的信息
* @param string $name
* @return array|string
*/
public function getInfo($name = '')
{
return isset($this->info[$name]) ? $this->info[$name] : $this->info;// 获取上传文件信息
}
/**
* 获取上传文件的文件名
* @return string
*/
public function getSaveName()
{
return $this->saveName;// 获取存储的文件名
}
/**
* 设置上传文件的保存文件名
* @param string $saveName
* @return $this
*/
public function setSaveName($saveName)// 设置存储的文件名
{
$this->saveName = $saveName;
return $this;
}
/**
* 获取文件的md5散列值
* @return $this
*/
public function md5()// md5 加密文件
{
if (!isset($this->hash['md5'])) {
$this->hash['md5'] = md5_file($this->filename);
}
return $this->hash['md5'];
}
/**
* 获取文件的sha1散列值
* @return $this
*/
public function sha1()// sha1 文件 散列值
{
if (!isset($this->hash['sha1'])) {
$this->hash['sha1'] = sha1_file($this->filename);
}
return $this->hash['sha1'];
}
/**
* 检查目录是否可写
* @param string $path 目录
* @return boolean
*/
protected function checkPath($path)//目录 检测
{
if (is_dir($path)) {
return true;
}
if (mkdir($path, 0755, true)) {
return true;
} else {
$this->error = "目录 {$path} 创建失败!";
return false;
}
}
/**
* 获取文件类型信息
* @return string
*/
public function getMime()
{
$finfo = finfo_open(FILEINFO_MIME_TYPE);// 获取文件 类型
return finfo_file($finfo, $this->filename);
}
/**
* 设置文件的命名规则
* @param string $rule 文件命名规则
* @return $this
*/
public function rule($rule)
{// 规则设置
$this->rule = $rule;
return $this;
}
/**
* 设置上传文件的验证规则
* @param array $rule 验证规则
* @return $this
*/
public function validate($rule = [])
{// 验证规则
$this->validate = $rule;
return $this;
}
/**
* 检测是否合法的上传文件
* @return bool
*/
public function isValid()
{// 检测 文件 是否 合法
if ($this->isTest) {
return is_file($this->filename);// 验证是否 为文件
}
return is_uploaded_file($this->filename);// 验证 是否 为 上传文件
}
最后
以上就是暴躁百合为你收集整理的[李景山php]每天TP5-20170104|thinkphp5-File.php-1的全部内容,希望文章能够帮你解决[李景山php]每天TP5-20170104|thinkphp5-File.php-1所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复