ThinkPHP教学笔记剖析_第1页
ThinkPHP教学笔记剖析_第2页
ThinkPHP教学笔记剖析_第3页
ThinkPHP教学笔记剖析_第4页
ThinkPHP教学笔记剖析_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、ThinkPHP课程目标:1、关于mvc和tp的简介2、快速入门3、学习tp中的各个组件(M、V、C)控制器模型视图4、实用项关于MVC和TP的简介:一、 什么是框架框架,即framework。其实就是某种应用的半成品,就是一组组件,供你选用完成你自己的系统。 二、 为什么使用框架l 代码重用l 合理分工l 解决多人协作开发问题三、 主流的php框架l Zend Framework l Yii l Symfony l Codelgniter l ThinkPHP l 四、 什么是MVCl MVC是施乐帕克研究中心 (Xerox PARC)在八十年代为编程语言Smalltalk80发明的一种软件

2、设计模式,至今已被广泛使用。l MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。 l M:model模型表示企业数据和业务规则 l V:view视图是用户看到并与之交互的界面 l C:controller控制器接受用户的输入并调用模型和视图去完成用户的需求 我们去吃饭,大堂经理问我们:客官来点什么?我们:来地沟油!经理让服务员将我们带到包房经理将我们点的菜发给厨房厨房开始做菜,好了之后,通知经理经理让服务员将菜端给我们经理:控制器后厨:模型 菜:数据服务员:视图五、 获取ThinkPHPl l 下载thinkphp3.

3、0l 直接部署到项目中l php5.2所有tp版本要求php必须是5以上的,tp3中要求是5.2以上的快速入门一、 了解TP目录结构将下载的tp3.0压缩包进行解压,可看到两个夹:Examples:代码示例ThinkPHP:这是我们想用的框架程序我们需要将Thinkphp 文件夹移动至我们的项目中,打开ThinkPHP文件夹,可以看到如下内容:l ThinkPHP.php框架入口文件l Common框架公共文件目录l Conf框架配置文件目录l Lang框架系统语言目录l Lib系统核心基类库目录l Tpl系统模板目录l Extend框架扩展目录二、 开发流程l 创建项目,并将ThinkPHP

4、获得l 创建入口文件l 配置项目l 创建控制器l 创建模型(可以不存在自定义模型)l 创建模板l 运行调试,调优l 部署到生产环境三、 入口文件l 所有项目都是从入口文件开始的l 定义框架路径l 定义项目路径l 定义项目名称l 载入框架入口文件 四、第一个ThinkPHP项目1、 创建项目2012,将thinkphp复制到我们网站的根路径下,在htdocs下创建index.php文件l require("ThinkPHP/ThinkPHP.php");l THINK_PATHl APP_NAME l APP_PATH 在tp中,由于目录结构稍微复杂,所以在第一次访问入口文件

5、时,会帮助我们自动创建项目结构运行路径:http:/localhost/index.php,可以看到如下界面,说明运行成功2、 了解项目目录结构l Common项目公共文件目录l Conf项目配置目录l Lang项目语言包目录l Lib项目类库目录l Tpl项目模板目录l Runtime项目运行时目录3、为什么输入地址之后,可以看到内容http:/localhost/index.php由于请求的是这个url,如果没有写任何信息,表示请求Index模块的index动作也就是说:会自动请求IndexAction这个类下的index方法为什么这样自动请求?l DEFAULT_MODULE:默认的默认

6、模块名l DEFAULT_ACTION:默认的动作名这个是由于这两个配置选项来决定的在配置文件Conf/config.php中添加如下内容:这时会请求StudentAction这个类下的add方法。4、我们按照以上的结构开发项目,合适?不合适将thinkphp框架和入口文件index.php移动至我们的项目路径(2012)文件夹下这样做需要哪些改动?如果您的项目和上图目录结构相同,可以使用如下代码:这样即可重新运行,重新初始化。5、开启调试l define(APP_DEBUG,true);l require(ThinkPHP/ThinkPHP.php);APP_DEBUG:表示开启调试功能功能

7、:如果开启,则不产生runtime.php这个编译文件如果产生了错误,可以看到错误提示6、了解thinkphp的工作流程Thinkphp.php文件主要内容如下:定义了项目路径定义了运行时文件路径定义是否开启调试,默认是false如果关闭调试模试并且运行时文件存在,就直接包含运行时文件否则定义tp框架的路径,并且包含common下的运行时文件运行时文件的功能?第一次运行时,会生产生运行时文件,这个运行时文件会保存一些系统常用设置和常用函数,这样一来,下次请求时,直接包含该运行时文件,可以避免系统开销运行时文件可能会造成延迟效果,在开发时,建议开启APP_DEBUG7、完善程序l 创建Index

8、控制器的hello方法,显示相应模板l 创建Admin控制器l 创建Admin控制器的index方法,显示相应模板l 创建Admin控制器的hello方法,显示相应模板控制器一、什么是控制器控制器接受用户的输入并调用模型和视图去完成用户的需求。 举个例子:http:/项目/index.php/a模块/b操作该请求是想请求a模块的b方法,也就是说,会调用a模块的控制器的b方法我们需要在项目目录的action目录下,定义一个控制器文件,这个文件的命名规则如下:模块名(首字母大写)Action.class.php文件中的类的命名规则:Class 模块名(首字母大写)Action extends Ac

9、tion二、URL的调度模式Thinkphp默认支持的url是这种形式的:http:/项目/index.php/模块/操作除此之外,还有哪些种url被支持在tp中,可以配置下面这个选项来使用相应的url'URL_MODEL' => 1,URL_MODEL它的取值范围:共有4种0:普通模式1:pathinfo模式2:Rewrite模式3:兼容模式1普通模式:http:/serverName/appName/index.php?m=module&a=action&id=1m:模块名a:动做名表示请求参数m指定的模块,请求这个模块下的a参数指定的方法,同时向这个

10、方法传递一个参数为id,值为1将url_model配置为0'URL_MODEL' => 0/设置url为普通模式2、 pathInfo模式 (默认模认)http:/serverName/appName/index.php/module/action/id/1/ module:表示模块action:表示方法id/1 :传递一个参数id,值为1URL_PATHINFO_DEPR :设置url分隔符'URL_MODEL' => 1,/设置url为pathInfo模式'URL_PATHINFO_DEPR' => '-'

11、/设置url中的分隔符如果这样设置,可以这样访问:http:/localhost/2012/index.php/Index-hello-id-13、 Rewrite模式我们可以利用rewrite模实现对入口文件的隐藏http:/serverName/appName/module/action/id/1/ 'URL_MODEL' => 2/设置为rewrite模式最终,可以使用下列这种URL进行访问,实现了对index.php入口文件的隐藏http:/localhost/2012/Index/hello4、 兼容模式http:/serverName/appName/?s=/

12、module/action/id/1/ module:模块名action:动做名id:参数名1:参数值'URL_MODEL' => 3/设置为兼容模式三、定义控制器位置:Lib/Actionclass UserAction extends Actionpublic function add()$this->display();四、 空操作l 空操作是指系统在找不到指定的操作方法的时候,会定位到空操作(_empty)方法来执行,利用这个机制,我们可以实现错误页面和一些URL的优化。l _empty($name)$name:请求的不存在的方法的名称怎样解决非法操作?当我

13、们请求一个不存在的方法时,会自动定位到这个叫_empty的方法中,这个不存在的方法名会保存到参数$name中1) 可以实现一些错误页面的处理功能2) 可以实现一些url的优化:在下面,我们将这个问题说清楚/我想查询北京、上海的所有会员信息?public function search()$city=$_GET'city'echo "select * from User where city='$city'".'<br>'我希望能实现这样的url优化:http:/localhost/2012/index.php/Us

14、er/shanghaihttp:/localhost/2012/index.php/User/beijingTP认为shanghai和beijing是一个方法名,会自动到UserAction控制器下查shanghai和bejing方法,由于我们没有定义这两个方法,所以会自动执行_empty方法,所以这时$name参数的值为shanghai或beijing,代码如下:五、 空模块l 空模块的概念是指当系统找不到指定的模块名称的时候,系统会尝试定位空模块(EmptyAction),利用这个机制我们可以用来定制错误页面和进行URL的优化。l EmptyActionMODULE_NAME当请求不到指定

15、的模块时,会自动去找EmptyAction这个类,如果这时url中没有指定方法名,由于DEFAULT_ACTION=index,所以会自动使用这个类的index方法,我们可以在这个类中再定义一个_empty方法,这样一来,如果用户请求了不存在的模块和不存在方法名时,会自动定位到这里1) 关于错误的处理2) 实现一些url的优化我想实现这样的url:http:/localhost/index.php/shanghaihttp:/localhost/index.php/bejing六、 项目分组为什么进行项目分组?如:前台、后台、博客、商品我们认为:这可以分成四个项目,在tp可以做一些设置,将项目

16、进行分组l config.php 配置文件l APP_GROUP_LIST:分组列表(有几个组,在这里都需要列出,使用逗号分隔开)l DEFAULT_GROUP:默认分组举个例子:我现在想将项目分成两个组,前台和后台Home:前台Admin:后台Conf/config.php代码如下:该如何设置分组目录:必须要做两个设置:1) 对控制器进行分组2) 对模板进行分组在Lib/Action目录下,创建两个文件夹,分别为:HomeAdmin这两个名字必须和分组名相同在Tpl/下,创建两个文件夹,分别为:HomeAdmin这两个名字必须和分组名相同将之前的几个控制器文件放入到Admin文件夹下,表示它

17、们都是后台项目的控制器,然后,输入url;http:/localhost/2012/index.php/Admin/Index/indexAdmin:表示分组名Index:表示模块名Index:表示动做名如:该问前台中的product模块中的add操作,可以使用如下url:http:/localhost/2012/index.php/Home/Product/add由于之前设置了默认分组名为Home,所以这个url也可以写成http:/localhost/2012/index.php/Product/add最后,在tpl下的各个项目文件夹创建相应的模块对应的模板,即可!七、 URL大小写htt

18、p:/localhost/2012/index.php/Admin/Index/hellohttp:/localhost/2012/index.php/Admin/index/hello以上两种URL都想表示访问同一个方法,但是由于tp中的url区分大小写,所以第二种方法会定位到index模块的hello方法上有时,我们希望url 中可以不区别大小写,可以使用如下设置:l config.php配置文件l URL_CASE_INSENSITIVE=>true/不区分大小写'URL_CASE_INSENSITIVE' => false, / 默认false 表示URL区分大小写 true则表示不区分大小写八、 前置后置操作有时我们希望执行方法之前和之后,各有一些额外的操作,这时可以考虑使用前置和后置操作l _before_l _after_public function _before_index()public function index()public function _after_index()九、 页

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论