ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:129.55KB ,
资源ID:9969230      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9969230.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Thinkphp最全教程thinkphp.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Thinkphp最全教程thinkphp.docx

1、Thinkphp最全教程thinkphpThinkphp教程1 熟悉Thinkphp1.1 什么是ThinkphpThinkphp是一个开源的PHP框架,遵循Apache2开源协议发布。使用面向对象的开发结构和MVC模式,封装了CURD和一些常用操作,在模版引擎、缓存机制、认证机制和扩展性方面均有独特的表现。1.2 学习Thinkphp需要具备什么样的条件学习框架前,你需要了解PHP、数据库的基础知识,同时对面向对象编程有一定了解,如果这些你还不具备,建议你先看看基础知识。Web开发除了掌握服务端脚本,客户端的JS、CSS等方面的知识也是必不可少的。所以我建议朋友们在开始使用框架时,先尽可能的

2、充实自己,掌握基础知识。开始后面的学习前,建议现把Thinkphp的开发手册看一遍,这样说到什么概念的时候你心中有数。1.3 我希望了解更多关于Thinkphp的信息你可以访问官方网站。建议下载Thinkphp的开发手册和API手册,便于查找相关信息。1.4 Thinkphp入门(1) 项目的创建你可以到官方网站下载Thinkphp代码生成器,或者访问 2.0支持。运行代码生成器后选择菜单“项目”-“生产项目目录”,或者使用快捷键“Ctrl+G”打开项目目录生产程序,按要求填写配置信息即可。这里数据库相关的信息我们留空。thinkphp1.0.2版本使用Confconfig.php作为配置文件

3、,而非以前的Conf_config.php,请自行修改项目生成的批处理程序,修改一下配置文件的文件名。事实上,thinkphp1.0.2版本有自动生成项目目录的功能,直接放置index.php到项目目录下,访问一下后项目其他目录自动生成。(2) 编写Hello world示例Thinkphp是单一入口模式,也就是说所有流程都是从index.php开始的。项目目录下的index.php我们称之为入口文件。你所编写的Action,使用http:/server/project/index.php/Action/function的形式访问。执行index.php的时候,Thinkphp的dispatc

4、h模块会自动分析应该加载哪个Action,并调用相应的函数。Hello world示例没有与数据库的交互,如果只是要输出一个“Hello world”的字符串的话,我们在index.php里面echo都可以了。不过这样的话没有达到演示框架的目的,我们按常规路线来搞:如果直接访问http:/server/project/index.php,框架默认调用IndexAction(这个默认的Action是可以配置的,详情参见Thinkphp开发手册),使用http:/server/project/index.php/Action的形式,默认访问该Action的index方法。所有Action、Mode

5、l以及模板文件都应该使用UTF8编码。我们在LibAction目录下编写一个IndexAction.class.php,内容如下: 默认访问IndexAction的index方法,所以访问http:/server/project/index.php和访问http:/server/project/index.php/Index/index效果是一样的(Linux区分文件名大小写,所有应该确保Action名称大小写与文件名一致)。页面输出Hello world。 下面我们演示一下如何用模板输出变量。 在Tpl目录下新建default目录,这是默认的模板,多模板的话就建多个文件夹。然后在defaul

6、t目录下新建Index目录,该目录名与Action对应。然后新建index.html,该文件名默认与调用的方法一致。编写index.html内容如下:$str然后我们修改开始编写的index方法,内容如下:function index() $this-assign(“str”, “Hello world”); $this-display();访问http:/server/project/index.php,页面源码为Hello world。2 Thinkphp的CURDCURD需要涉及到数据库部分,而且模板显示内容一般也是跟数据库紧密集合的。所以准备了一个非常简单的BBS的例子。先看一下数据库

7、结构。user表很简单,只记录用户名密码和上次登录时间。column表记录BBS分区,category记录BBS版面。一个分区下面可以有多个版面。page表记录BBS上的帖子。主题帖的pid为0,跟帖的pid为主题帖的id。2.1 READ涉及到数据库的话,就需要有Model。在Lib的Model目录下编写PageModel.class.php查询所有数据,在Lib的Action目录下编写PageAction.class.php内容如下findAll(); /第一个参数填写查询条件,第二个参数为结果字段 dump($result);? 如果只需要查一条记录,可以使用find方法 functio

8、n byid() $pagemodel = D(Page); $result = $pagemodel-find(id=.$_GETid.); dump($result); 更复杂一点的查询,需要结合Model和HashMap的查询条件来实现。HashMap查询大家可以看看手册,自己多实验一下。这里我演示一下Model相关的查询。 视图查询。在LibModel目录下编写PageViewModel.class.php如下array(id,title,category_id,content,user_id,addtime,lastmodify,pid), User=array(loginid) )

9、; / 定义基础查询条件 protected $viewCondition = array(Page.user_id = array(eqf,User.id); / 定义视图主键名称 Public function getPk() return id; ? 上面定义了一个视图,将Page的user_id与user表的id对应,这样我们就可以在页面中直接查看发帖的用户的用户名了。给PageAction实现一个pageview方法如下: function pageview() $pageview = D(PageView); $result = $pageview-findAll(); dump(

10、$result); 关联查询。关联查询有好几种关系,具体见手册,我这里演示一下关联的HAS_MANY。(TP核心文件的Model.class.php 1238行,findAll应该有10个参数,早期版本的1.0RC1少了一个参数,请检查参数个数,如果只有9个参数,请在倒数第三个参数(true)前面加一个null;结合使用has_many和模板的sublist标签进行关联查询时,Model.class.php 1238行的findAll最后一个参数应该使用false,否则数据查不出来) 我们定义一个ColumnModel.class.php,这是分区的数据表,每个分区下面有多个版面,是HAS_M

11、ANY的关系。HAS_MANY, class_name=Category, foreign_key=pid, mapping_name=category ) );? 由于关联查询涉及到Category表,我们需要定义一个CategoryModel.class.php,内容很简单: 下面可以开始关联查找了。定义一个ColumnAction.class.php,内容如下:xfindAll(); /xfind、xfindAll关联查询 dump($result);? 其他关联,比如BLOGS_TO之类的,大家可以举一反三,多实验几次就能明白了。2.2 C操作如何使用Model的add方法添加记录大家

12、可以看看手册,这里我主要演示一下使用表格自动添加记录,后面将演示一下自动填充以及表格校验。首先到tpldefault目录下添加一个名为Page的文件夹,添加一个add.html。这个是发表新主题的页面,内容如下(_URL_表示当前Action,_APP_表示当前应用)注意:所有文件都要使用UTF8编码:发表新主题标题内容需要注意的是,各个input的name默认跟数据表的字段同名,这样才能自动根据form的内容生产记录。由于是主题帖发表,所以pid的value直接设置成0(跟帖页面上的pid的value需要设置成主题帖的id)。category_id 表示当前帖子属于那个分区,这个是在用户进入

13、分区发帖时设置的。给PageAction添加一个add方法,用来显示发表主题的页面,内容如下:function add() $this-assign(“cateid”,$_GET“cid”); $this-display(); 现在以及可以正确显示发帖页面了,下面就要开始编写insert方法,将帖子添加到数据库中function insert() $Pagemodel = D(Page); $vo = $Pagemodel-create();if(false = $vo) die($Pagemodel-getError(); $topicid = $Pagemodel-add(); /add方

14、法会返回新添加的记录的主键值 if($topicid) echo 发表主题成功; else throw_exception(发表主题失败);下面我们修改一下PageModel,添加表格自动填充和校验的功能,修改后的PageModel.class.php文件如下class PageModel extends Model var $_auto = array( array(user_id,getUser,ALL,function), array(addtime,2007-12-22,ADD) ); var $_validate = array( array(title,require,标题必须!)

15、, array(content,require,内容必须!) ); 自动填充根据用户制定的规则填充数据表的指定字段,自动校验除了require以外,还可以使用正则表达式,详见手册。2.3 U操作U操作与C操作大同小异,主要是使用Model的save方法保持记录。不在赘述。2.4 D操作D操作注意是Model的delete方法,我们演示一下根据ID删除帖子的功能,编写PageAction的delete方法如下function delete() $Pagemodel = D(Page); $id = $_REQUESTid;if($Pagemodel -deleteById($id) echo “

16、删帖成功”;else echo “删帖失败”;3 Thinkphp的模板机制关于模板的详细介绍,请看手册关于模板的章节。下面演示一下常用标签的使用。最简单的是变量输出,这个在Hello world里面以及演示过了,如果记不清楚如何输出变量,请参考第一节。下面我们演示一下如何输出数组(对象)。可以通过配置DATA_RESULT_TYPE,设置返回结果的类型(1:对象,0:数组)。如果不配置,默认数据返回格式为数组。一般情况下,模板中的变量无需区分其数组还是对象,Thinkphp在赋值的时候会自动判断。使用上一节的PageAction的byid方法,我们格式化输出帖子内容。在TpldefaultP

17、age目录下使用utf-8编码建一个byid.html模板,内容如下(第一行导入标签库):Thinkphp Demo $vo.user_id title: $vo.title content: $vo.content add time: $vo.addtime 然后我们修改一下byid方法,将dump语句注释掉,添加:$this-assign(vo,$result); /模板中我们使用的是vo变量$this-display(); /加载模板,输出下面演示一下volist的使用,同时我们演示一下include标签。volist相当于for循环。很多朋友可能用过require(“header.ht

18、m”),require(“footer.htm”)这样的模板操作,include标签实际上就是这个作用。我们首先在Tpldefault目录下建立一个public目录,一些公用的文件我们放在这个目录下。建立header.html内容如下:Thinkphp Demo建立footer.html内容如下:copyright 2008 yhustc 然后我们到Page的模板目录新建一个pageview.html,内容如下: $vo.loginid title: $vo.title content: $vo.content add time: $vo.addtime 可以看到,其实就是把刚才显示单个帖子的

19、页面放到一个volist标签里面就可以实现循环了。name是Action中将要赋值的变量,id是在volist内部使用的变量。将pageview函数中的dump语句注释掉,添加:$this-assign(result,$result); /模板中我们使用的是result变量$this-display(); /加载模板,输出翻页操作要做内容列表输出有一个很重要的问题就是分页显示。用thinkphp做分页是很简单的。下面我们演示一下。还是刚才的pageview,我们修改一下函数。在开始查询前,需要导入分页类,同时根据当前页数设置limit条件。完整的pageview函数如下:function pa

20、geview()$pageview = D(PageView); $count= $pageview-count(); /count函数参数是查询条件,默认没有where的条件限制 import(ORG.Util.Page); /导入分页类 if(!empty($_REQUESTlistRows) $listRows = $_REQUESTlistRows; else $listRows=2; /listRows标识每页显示多少条记录 $p= new Page($count,$listRows); /根据总数和每页显示记录数生成Page类的对象 $result = $pageview-find

21、All(,*,id asc,$p-firstRow.,.$p-listRows); $page=$p-show(); /page类的show方法生成翻页的字符串 /dump($result); $this-assign(result,$result); /模板中我们使用的是vo变量 $this-assign(page,$page); $this-display(); /加载模板,输出主要就是增加了生成翻页函数的操作,同时findAll函数修改一下调用方式,将limit条件传入。倒数第二行给一个叫page的模板变量赋值,所以我们也需要在模板中添加一个page。在下面一行添加$page。然后刷新页

22、面,thinkphp自动生成了翻页链接。内置list标签如果只是单纯的进行列表操作,例如后台管理里面查看文章列表,使用list标签是个很方便的办法。我们试着将分区内容作为列表显示。给ColumnAction增加一个listpage操作如下:function listpage() $column = D(Column); $result = $column-findAll(); $this-assign(result,$result); $this-display(); listpage操作很普通,$result是select出来的结果,将其赋值给模板中的result变量。现在看看模板的list

23、标签如何写。TpldefaultColumnlistpage.html内容如下:主要是配置datasource和show两个熟悉。datasource就是刚才赋值的result。show是要显示的列。第一个是数据库select出来对应的字段,冒号后面的是标题,竖线后面的是列宽。如果需要将字段进行函数处理,在字段后用|function的形式调用。比如id|function:函数处理后的编号|20%。访问一下页面,thinkphp自动生成了一个表格。你可以给这个表格指定css,也可以添加checkbox,添加action。这些内容可以通过RBAC管理系统的Node的模板部分学习。多级列表有的时候需要用到多级列表。比如显示一个BBS的分区,然后分区下面有很多版面。这个时候可以使用sublist标签。将Column的index操作的dump操作注释掉,添加:$this-assign(result,$result);$this-display();通过上面的学习,相信

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1