`

TP回顾

阅读更多

【前言】

    用了一段时间的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操作。

.

分享到:
评论

相关推荐

    聚龄项目回顾-TP-LINK牵手聚龄供应链升级数字化仓储管理.pdf

    标题中的“聚龄项目回顾-TP-LINK牵手聚龄供应链升级数字化仓储管理”是指TP-LINK,一家全球领先的网络通讯设备供应商,与聚龄供应链合作,通过数字化手段升级其仓储管理系统的过程。这个项目的主要目标是提升TP-LINK...

    聚龄项目回顾-TP-LINK牵手聚龄供应链升级数字化仓储管理.docx

    《TP-LINK与聚龄供应链合作升级数字化仓储管理解析》 在全球网络通讯设备市场上,TP-LINK以其卓越的产品和服务占据领先地位,其业务涵盖了以太网、无线局域网、宽带接入等多个领域,并积极拓展智能家居和网络安全等...

    华为路由器怎么桥接tplink路由器?

    在现代网络环境中,路由器桥接是一种常见的技术,用于扩大无线网络的覆盖范围。本教程中,我们要了解的是如何将华为路由器桥接到TP-Link...在操作中遇到问题时,不妨回顾上述步骤,或联系厂商的技术支持获取帮助。

    TP-LINK普联科技2011年应聘指南

    - **后续跟进**:面试后及时发送感谢邮件给面试官,并简要回顾面试过程中的亮点,增加录用机会。 #### 结语 通过上述知识点的梳理,我们可以看到TP-LINK作为一家全球知名的企业,在招聘过程中对于应聘者的综合素质...

    IDF 2008 TP For Moblin

    "IDF 2008 TP For Moblin" 和 "IDF 2008 Taiwan For Moblin" 提到的是2008年英特尔开发者论坛(Intel Developer Forum, IDF)在台湾举行的一场活动,专注于Moblin项目。Moblin是一个开放源代码的操作系统平台,主要...

    tp1_cpp

    在目标饮食和非饮食饮食课程中回顾C.est pourquoi。 客观性的建筑工人法律协会,直接或间接的部分所有权人财产保护法。daccess-ods.un.org daccess-ods.un.org daccess-ods.un.org daccess-ods.un.org 例如:在犀牛...

    tplink一面 后端.pdf

    从提供的文件内容来看,这份文档似乎是关于一个人参加TP-LINK公司后端岗位面试时的记录或摘要。以下是根据文件内容提取的知识点: 1. 成绩 这可能指的是面试者在学术或技能测试中的表现。在面试中讨论成绩可以涉及...

    最新在线TP功能检测系统行业企业安全生产目标管理.pdf

    这个制度规定了目标和指标的设立、实施、监测、回顾和更新的流程,并明确了各部门的责任和权限。例如,安全生产领导小组负责整体的管理和日常安全工作,而各部门则需根据公司目标将任务细化并执行。 2. **安全生产...

    TP2SQLServer数据库表管理.pptx

    首先,回顾数据库的基本概念。数据库是一种组织和存储数据的系统,它能够提供数据的高效访问和管理。数据库的发展历程中,从早期的层次型和网状型数据库到现在的关系型数据库,如SQL Server,已经成为主流。在关系型...

    FLASHCS3动画制作TP04色彩绘图工具.ppt

    首先,让我们回顾一下上一章节的内容,包括绘制模式、重叠形状的处理,以及对象的转换和合并技巧,如交集、联合、打孔和裁切。这些基本操作是构建复杂图形的基础。 接着,我们讨论了舞台缩放和平移、标尺和辅助线的...

    python练习题Question42.txt

    在开始详细解释知识点之前,先对元组的基本概念进行回顾: 1. 元组的定义:元组是使用圆括号()进行创建,包含一系列的元素,元素之间用逗号隔开。 2. 元组的不可变性:元组一旦被创建,其中的数据就不能被修改,这...

    华为HCIP-RS学习笔记.rar

    225TP技术回顾pdf e23-RSTP. pdf 24-RSTP保护pdf 25-MSTP. pdf 26高可靠性概述pdf 27- Eth-Trunk链路聚合pdf 28-VRRP. pdf 29-BFD. pdf 30-DHCP Relay pdt 31、VPN基础pdf 32-GRE VPN pdf 33PK公钥基础架构pdf 34-...

    TP_DAW:TrabalhoPráticode DAW

    对于一个DAW项目,按年份过滤可能意味着用户可以快速定位到特定时间段的录音、混音或制作工作,这对于回顾历史项目、组织音乐作品集或者进行时间线分析非常有用。 在实现这个功能时,开发者需要考虑以下几个关键...

    ACCP6.0HTMLPPT

    13. TP13.ppt - 最后一个文件,可能总结了整个课程的关键点,回顾了HTML的基础知识,并对未来的HTML学习给出了建议或进阶话题。 通过这一系列的PPT学习,学员应能掌握基本的HTML语法,创建静态网页,理解HTML5的新...

    华为HCIP-Security培训视频教程【共31集】.rar

    7 对na vpn回顾 8 vpn简介及ipsec 10 ipsec 11 ipsec nat-t 12 ipsec 13 l2tp over ipsec 14 ssl vpn 15 网络攻击1 16 网络攻击2 17 DDOS 18 controller概述 19 angile controller安装部署 20 802.1x ...

    Turbo Pascal 7.0

    Turbo Pascal 7.0 是一款历史悠久的编程语言开发环境,主要针对Pascal语言...不过,由于现代编程环境的更新迭代,Turbo Pascal 7.0可能不再支持最新的操作系统或技术,但其在编程教育和历史回顾方面仍有其独特意义。

    深入。NET 上部

    《深入.NET 上部》系列教程主要涵盖了.NET框架的基础与进阶知识,分为5个部分,分别命名为"上部1"到"上部5"。这些章节旨在为学习者提供一个全面且深入的理解...同时,课件的形式使得学习过程更加直观,便于理解和回顾。

    AT指令长短信接收PDU格式分析

    在深入了解AT指令接收超长短信的具体细节之前,我们首先简要回顾一些基础知识: 1. **AT指令**:AT(Attention)指令是一种用于控制调制解调器或类似设备的标准命令集,广泛应用于移动通信领域。 2. **PDU...

    desapp-unq-grupo-i-012018:TP开发2018年第1学期-卡洛斯·佩雷斯·阿古斯丁·加西亚·史密斯

    该压缩包文件“desapp-unq-grupo-i-012018:TP开发2018年第1学期-卡洛斯·佩雷斯·阿古斯丁·加西亚·史密斯”揭示了一个名为“desapp-unq-grupo-i-012018”的项目,该项目可能是2018年第一学期的一个团队项目,专注...

    用示波器测试电源纹波的方法.docx

    在深入了解如何使用示波器进行电源纹波测试之前,我们先简要回顾一下示波器的基本原理和操作方法。 **1.1 示波器的功能** 示波器是一种用于观察电信号波形的仪器,可以用来测量电压随时间的变化情况。通过调整水平...

Global site tag (gtag.js) - Google Analytics