【前言】
用了一段时间的TP框架,发现查询手册其实也是必备技能。因为不可能都记住,而且版本更迭也很快。这里总结下最近应用TP3.2.3的难点和疑惑点
【主体】
(1)D方法
D方法是一个自定义数据模型后用来调取数据库表名的方法,你使用和M一样,区别就在于M只调用系统Model,而U是调用你定义的Model
(2)I方法获取和POST获取
I('get.id')和I('post.'),I方法带过滤效果
(3)辅助方法
(4)连贯操作
(5)联表查询
(6)上传/添加操作时的上传时间
if(IS_POST){//处理提交 // 接收除了file外其他字段,因为file无法通过post接收 $post = I('post.'); //补全addtime字段 $post['addtime']=time(); //实例化模型 $model = M('doc'); $result = $model->add($post); //判断保存结果 if($result){ $this->success('添加成功',U('showList'),3); }else{ $this-error('添加失败'); } }else{//展示模板 $this->display(); }
拓展***:
模板中读取时间还需转换格式
{$vol.addtime|date='Y-m-d H:i:s',###}
(7)目前所用过的快速方法:U(URL组装),D(实例化自定义模型),M(实例化父类模型),G(性能测试)
①G语法:如果第三个参数是数字,则表示统计代码的执行时间,数字表示精确的小数位数(单位:us微秒---1秒=1000毫秒=1000000微秒);若为字符m,则表示统计内存开销(单位:byt),这种需要服务器的支持
G('开始标记') //需要统计效率的代码段 G('结束标记') G('开始标记','结束标记',‘数字 / 字符’)
案例:使用G方法统计某段代码执行时间开销
public function test(){ //定义开始标记 G('start'); //代码段 for($i=0;$i<100000;$i++){ // echo $i; } //结束标记 G('stop'); //开始统计,4表示精确到后4位小数 echo G('start','stop',4); }
测试后输出:0.0030,所以执行了0.0030秒
②I方法
处理表单信息的提交操作
在控制器deptController.class.php里add方法判断是否是POST提交。若是则提交,否则展示
扩展:
1. 方法判断---------判断请求是否是post,之前用$_POST判断,但在ThinkPHP里系统封装了几个比较实用的常量,可以直接用常量来判断
IS_POST、IS_GET、IS_AJAX、IS_CGI、IS_PUT等
2. 数据接收---------之前用$_POST接收数据,在ThinkPHP里使用I快速方法来接收数据。I方法可以接收任何类型输入post、get、request、put等。且系统默认自带防止SQL
注入的方法(使用PHP内置函数htmlspecialchars,将预定义字符<,>转化为HTML实体字符)。因为$POST没有对数据进行过滤,还得手动过滤。所以推荐使用I方法接收数据,
自带过滤效果,防止SQL注入
3.I 快速方法语法:I('变量类型.变量名',['默认值'],['过滤方法']),过滤方法可以自定义过滤
接收整个数组:I('get');
public function add(){ //判断请求类型,若是post则提交,否则展示 if (IS_POST) { //处理表单请求 $post = I('post.'); //成功接收后,写入数据 $model = M('dept');//模型实例化 $result = $model->add($post); //判断返回值 if ($result) { $this->success('添加成功',U('showList'),3); }else{ $this->error('添加失败');//默认跳到上一页 } }else{ $model = M('dept');//模型实例化 $data = $model->where('pid = 0')->select();//条件查询 $this->assign('data',$data);//变量分配传递到模板 $this->display(); } }
③U方法:参考http://www.cnblogs.com/jianxian/p/8637061.html
(8)截取字符串、curl发送get与post请求、去除空格等方法封装
参考网址:http://www.cnblogs.com/jianxian/p/8689105.html
(9)上传错误
查看源码后发现上传错误,所以这里总结下上传错误0-7
0--------------没有错误,上传成功 1--------------上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值! 2--------------上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值! 3--------------文件只有部分被上传! 4--------------没有文件被上传! 6--------------找不到临时文件夹! 7--------------文件写入失败!
(10)MVC心得->如果可以直接进行CURD操作的,简单的基本操作可以直接在控制器编写。如果数据需要保存处理等操作,则最好放到模型里,进行数据的CURD操作。
.