public function download($currdir = null){ $file = urldecode($currdir); $file = iconv('UTF-8', "GB2312", $file); if (!file_exists($file)) { $this->error("文件不存在"); } //basenamecn 是common文件自定义的方法 $filename = basenamecn(iconv('GB2312',…
public function renames(){ if(request()->isAjax()){ $file = iconv('UTF-8','GB2312',urldecode(input('file'))); $filename = input('filename'); $newfile = iconv('UTF-8','GB2312',dirname($file).DS.$filename); if(file_exists($newfile)){//判断名称是否已经存在 return…
1.is_dir():检查指定的文件是否是目录 2.scandir():返回指定目录中的文件和目录数组 3.unlink():删除文件,如果删除的文件不存在会报错,加@抑制报错 public function del(){ if(request()->isAjax()){ $file = iconv('UTF-8','GB2312',urldecode(input('file'))) if(is_dir($file)){ $arr = scandir($file);//列出$file目录中的文件…
显示文件用到的函数有 1.urlencode($str):编码URL字符串,便于将字符串编码并将其用于URL的请求部分 2.urldecode($str):解码已经编码的URL字符串,返回解码后的字符串 3.iconv('GB2312','UTF-8',$str):将字符串$str,编码由GB2312转变为utf-8:解决中文乱码 4.file_exists($path):检查文件或目录是否存在,$path规定要检查的路径 5.stripos($str,$find,$start):查找$find…
public function edit(){ $file = iconv('UTF-8','GB2312',urldecode(input('file'))); if(empty($file)|| !file_exists($file)){ $this->error('操作异常'); } $arr = ['.PHP', '.CSS', '.JS', '.XML', '.HTML', '.HTACCESS','.TXT','.JSON']; $exc = strtoupper(substr($f…
ThinkPHP5.0开发手册地址 https://www.kancloud.cn/manual/thinkphp5/118003 此博文仅仅作为个人笔记存储,没有广告,宣传的意图…
之前写的一篇微信公众号文章. 工作需要,进行此次调研,并记录开发过程. 开发目的,页面授权,页面获取用户头像,用户昵称 微信id, 分享页面. 微信订阅号 无法获取用户个人信息 写在记录前,公众号也是第二次搞了,每次看完心里都是一阵苦,究其原因就是没有彻底搞懂他,不明白各个文档直接的关系,这次从头到尾搞一下,记录下整个流程,备忘. 微信服务号开发: 微信公众号开发从0到配置相关功能 //由于微信在开发模式下原有的失效功能比较多需要重新配置,暂时发现失效的有:自动回复,自定义菜单.不确定失效是否需…
目录 上一篇博文 了解自动化测试 单元测试 集成测试 端对端测试 通过打印日志来调试 了解运行测试 断点调试 通过Spector.js测试WebGL 通过log调试Shader 移动端测试 了解性能测试 测试时间开销 测试内存开销 搭建本地测试环境 大家好,本文介绍了3D引擎的测试方法,搭建了本地的测试环境. 上一篇博文 从0开发3D引擎(三):搭建开发环境 了解自动化测试 对于引擎开发这种复杂.长期的项目,为了减少bug,提升长期的开发效率,自动化测试必不可少.在我们的Wonder.js引擎中…
命名规范 ThinkPHP5遵循PSR-2命名规范和PSR-4自动加载规范,并且注意如下规范: 目录和文件 目录不强制规范,驼峰及小写+下划线模式均支持: 类库.函数文件统一以.php为后缀: 类的文件名均以命名空间定义,并且命名空间的路径和类库文件所在路径一致: 类名和类文件名保持一致,统一采用驼峰法命名(首字母大写): 函数和类.属性命名 类的命名采用驼峰法,并且首字母大写,例如 User.UserType,默认不需要添加后缀,例如UserController应该直接命名为User: 函数的…
前面介绍了字节缓存的一堆概念,可能有的朋友还来不及消化,虽然文件通道的用法比起传统I/O有所简化,可是平白多了个操控繁琐的字节缓存,分明比较传统I/O更加复杂了.尽管字节缓存享有缓存方面的性能优势,但传统I/O也有缓存输入输出流呀,大家都有缓存机制,凭什么说NIO的文件处理更高效?之所以目前还看不出文件通道的性能优势,是因为前面介绍的仅限于它的基本用法,尚未涉及到高级特性,接下来阐述文件通道的真正杀手锏:使用通道复制文件.复制文件的常规做法很简单,从源文件中读出数据,再将数据写进目标文件.采取文…