




已阅读5页,还剩276页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
+(下载源码就到源码网:)ThinkPHP2.0 完全开发手册版权申明发布本资料须遵守开放出版许可协议 1.0 或者更新版本。 未经版权所有者明确授权,禁止发行本文档及其被实质上修改的版本。 未经版权所有者事先授权,禁止将此作品及其衍生作品以标准(纸质)书籍形式发行。 如果有兴趣再发行或再版本手册的全部或部分内容,不论修改过与否,或者有任何问题,请联系版权所有者 。对 ThinkPHP 有任何疑问或者建议,请进入官方论坛 发布相关讨论。并在 此感谢 ThinkPHP 团队的所有成员和所有关注和支持 ThinkPHP 的朋友。有关 ThinkPHP 项目及本文档的最新资料,请及时访问 ThinkPHP 项目主站 。 本文档及其描述的内容受有关法律的版权保护,对本文档内容的任何形式的非法复制,泄露或散布,将导致相应的法律责任。(下载源码就到源码网:)2ThinkPHP2.0 完全开发手册(下载源码就到源码网:)目 录1简介72入门基础82.1基础概念. 82.2获取 ThinkPHP . 132.3关于版本. 142.4环境要求. 142.5许可协议. 153架构设计163.1系统特性. 163.2目录结构. 183.3MVC 分层 . 213.4执行流程. 213.5命名规范. 223.6入口文件. 243.7项目编译. 253.8URL 访问. 263.9控制器 . 283.10模型 . 283.11数据库抽象层. 293.12视图 . 293.13模板引擎. 303.14函数库 . 303.15类库 . 323.16扩展 . 37(下载源码就到源码网:)3ThinkPHP2.0 完全开发手册4构建应用384.1开发流程. 384.2入口文件. 394.3自动生成. 404.4项目配置. 414.5业务逻辑. 424.6模板定义. 434.7运行应用. 445开发指南465.1配置 . 465.2控制器 . 525.3模型 . 745.4视图 . 1495.5错误和日志 . 1595.6调试 . 1655.7缓存 . 1725.8安全 . 1785.9部署 . 1815.10杂项 . 1826扩展指南1966.1类库扩展. 1966.2应用扩展. 1976.3控制器扩展 . 1986.4模型扩展. 2006.5驱动扩展. 2016.6Widget 扩展 . 2034ThinkPHP2.0 完全开发手册6.7行为扩展. 2046.8标签库扩展 . 2056.9模板引擎扩展. 2106.10模式扩展. 2117模板指南2167.1变量输出. 2177.2使用函数. 2207.3系统变量. 2227.4快捷输出. 2247.5默认值输出 . 2257.6包含文件. 2257.7导入文件. 2277.8Volist 标签. 2297.9Foreach 标签. 2317.10Switch 标签. 2317.11比较标签. 2337.12Range 标签 . 2357.13Present 标签. 2367.14Empty 标签 . 2367.15Defined 标签 . 2377.16IF 标签. 2377.17标签嵌套. 2387.18使用 PHP 代码 . 2397.19原样输出. 2407.20模板注释. 2407.21引入标签库 . 2415ThinkPHP2.0 完全开发手册7.22修改定界符 . 2438附录2458.1常量参考. 2458.2配置参考. 2478.3函数参考. 2588.4类库参考. 2658.5关于升级. 2758.6代码重构. 2758.7开源应用. 2778.8典型案例. 2788.9大事记 . 2788.10鸣谢 . 2796ThinkPHP2.0 完全开发手册1简介ThinkPHP 是一个免费开源的,快速、简单的面向对象的轻量级 PHP 开发框架,遵循 Apache2 开源 协议发布,是为了敏捷 WEB 应用开发和简化企业级应用开发而诞生的。拥有众多的优秀功能和特性,经 历了三年多发展的同时,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,众 多的典型案例确保可以稳定用于商业以及门户级的开发。ThinkPHP 借鉴了国外很多优秀的框架和模式,使用面向对象的开发结构和 MVC 模式,采用单一入口 模式等,融合了 Struts 的 Action 思想和 JSP 的 TagLib(标签库)、RoR 的 ORM 映射和 ActiveRecord 模 式,封装了 CURD 和一些常用操作,在项目配置、类库导入、模版引擎、查询语言、自动验证、视图模 型、项目编译、缓存机制、SEO 支持、分布式数据库、多数据库连接和切换、认证机制和扩展性方面均 有独特的表现。使用 ThinkPHP,你可以更方便和快捷的开发和部署应用。当然不仅仅是企业级应用,任何 PHP 应用 开发都可以从 ThinkPHP 的简单和快速的特性中受益。ThinkPHP 本身具有很多的原创特性,并且倡导大 道至简,开发由我的开发理念,用最少的代码完成更多的功能,宗旨就是让 WEB 应用开发更简单、更快 速。为此 ThinkPHP 会不断吸收和融入更好的技术以保证其新鲜和活力,提供 WEB 应用开发的最佳实 践!ThinkPHP 遵循 Apache2 开源许可协议发布,意味着你可以免费使用 ThinkPHP,甚至允许把你基于ThinkPHP 开发的应用开源或商业产品发布/销售。7ThinkPHP2.0 完全开发手册2入门基础2.1 基础概念在学习和掌握 ThinkPHP 开发之前,我们有必要了解一些相关的基础概念,这样会更加便于后面内容 的理解和掌握。2.1.1LAMPLAMP 是基于 Linux,Apache,MySQL 和 PHP 的开放资源网络开发平台,PHP 是一种有时候用 Perl 或 Python 可代替的编程语言。这个术语来自欧洲,在那里这些程序常用来作为一种标准开发环境。 名字来源于每个程序的第一个字母。每个程序在所有权里都符合开放源代码标准:Linux 是开放系统; Apache 是最通用的网络服务器;MySQL 是带有基于网络管理附加工具的关系数据库;PHP 是流行的对象 脚本语言,它包含了多数其它语言的优秀特征来使得它的网络开发更加有效。开发者在 Windows 操作系 统下使用这些 Linux 环境里的工具称为使用 WAMP。虽然这些开放源代码程序本身并不是专门设计成同另外几个程序一起工作的,但由于它们都是影响 较大的开源软件,拥有很多共同特点,这就导致了这些组件经常在一起使用。在过去的几年里,这些组 件的兼容性不断完善,在一起的应用情形变得更加普遍。并且它们为了改善不同组件之间的协作,已经 创建了某些扩展功能。目前,几乎在所有的 Linux 发布版中都默认包含了这些产品。Linux 操作系统、 Apache 服务器、MySQL 数据库和 Perl、PHP 或者 Python 语言,这些产品共同组成了一个强大的 Web 应用程序平台。8ThinkPHP2.0 完全开发手册随着开源潮流的蓬勃发展,开放源代码的 LAMP 已经与 J2EE 和.Net 商业软件形成三足鼎立之势,并且该软件开发的项目在软件方面的投资成本较低,因此受到整个 IT 界的关注。从网站的流量上来说,70%以上的访问流量是 LAMP 来提供的,LAMP 是最强大的网站解决方案2.1.2OOP面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一种计算机编程 架构。OOP 的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成。OOP 达 到了软件工程的三个主要目标:重用性、灵活性和扩展性。为了实现整体运算,每个对象都能够接收信 息、处理数据和向其它对象发送信息。OOP 主要有以下的概念和组件:组件 数据和功能一起在运行着的计算机程序中形成的单元,组件在 OOP 计算机程序中是模块和 结构化的基础。抽象性 程序有能力忽略正在处理中信息的某些方面,即对信息主要方面关注的能力。封装 也叫做信息封装:确保组件不会以不可预期的方式改变其它组件的内部状态;只有在那些提 供了内部状态改变方法的组件中,才可以访问其内部状态。每类组件都提供了一个与其它组件联系的接 口,并规定了其它组件进行调用的方法。多态性 组件的引用和类集会涉及到其它许多不同类型的组件,而且引用组件所产生的结果得依据 实际调用的类型。继承性 允许在现存的组件基础上创建子类组件,这统一并增强了多态性和封装性。典型地来说就 是用类来对组件进行分组,而且还可以定义新类为现存的类的扩展,这样就可以将类组织成树形或网状结构,这体现了动作的通用性。9ThinkPHP2.0 完全开发手册由于抽象性、封装性、重用性以及便于使用等方面的原因,以组件为基础的编程在脚本语言中已经变得特别流行。2.1.3MVCMVC 是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用 MVC 应用程序被分成 三个核心部件:模型(M)、视图(V)、控制器(C),它们各自处理自己的任务。视图 :视图是用户看到并与之交互的界面。对老式的 Web 应用程序来说,视图就是由 HTML 元素组 成的界面,在新式的 Web 应用程序中,HTML 依旧在视图中扮演着重要的角色,但一些新的技术已层出 不穷,它们包括 Adobe Flash 和象 XHTML,XML/XSL,WML 等一些标识语言和 Web services。如何处理 应用程序的界面变得越来越有挑战性。MVC 一个大的好处是它能为你的应用程序处理很多不同的视图。 在视图中其实没有真正的处理发生,不管这些数据是联机存储的还是一个雇员列表,作为视图来讲,它 只是作为一种输出数据并允许用户操纵的方式。模型 :模型表示企业数据和业务规则。在 MVC 的三个部件中,模型拥有最多的处理任务。例如它可 能用象 EJBs 和 ColdFusion Components 这样的构件对象来处理数据库。被模型返回的数据是中立的,就 是说模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就 可以被多个视图重用,所以减少了代码的重复性。控制器 :控制器接受用户的输入并调用模型和视图去完成用户的需求。所以当单击 Web 页面中的超 链接和发送 HTML 表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后确定用哪个视图来显示模型处理返回的数据。10ThinkPHP2.0 完全开发手册现在我们总结 MVC 的处理过程,首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图格式化模型返回的数 据,并通过表示层呈现给用户。2.1.4ORM对象关系映射(Object/Relation Mapping,简称 ORM),是随着面向对象的软件开发方法发展 而产生的。面向对象的开发方法是当今企业级应用开发环境中的主流开发方法,关系数据库是企业级应 用环境中永久存放数据的主流数据存储系统。对象和关系数据是业务实体的两种表现形式,业务实体在 内存中表现为对象,在数据库中表现为关系数据。内存中的对象之间存在关联和继承关系,而在数据库 中,关系数据无法直接表达多对多关联和继承关系。因此,对象关系映射(ORM)系统一般以中间件的形 式存在,主要实现程序对象到关系数据库数据的映射。面向对象是从软件工程基本原则(如耦合、聚合、封装)的基础上发展起来的,而关系数据库则是从数 学理论发展而来的,两套理论存在显著的区别。为了解决这个不匹配的现象,对象关系映射技术应运而 生。2.1.5CURDCURD 是一个数据库技术中的缩写词,一般的项目开发的各种参数的基本功能都是 CURD。它代表创 建(Create)、更新(Update)、读取(Read)和删除(Delete)操作。CURD 定义了用于处理数据 的基本原子操作。之所以将 CURD 提升到一个技术难题的高度是因为完成一个涉及在多个数据库系统中进行 CURD 操作的汇总相关的活动,其性能可能会随数据关系的变化而有非常大的差异。11ThinkPHP2.0 完全开发手册CURD 在具体的应用中并非一定使用 create、update 、read 和 delete 字样的方法,但是他们完成的功能是一致的。例如,ThinkPHP 就是使用 add、save、select 和 delete 方法表示模型的 CURD 操作。2.1.6ActiveRecordActiveRecord 也属于 ORM 层,由 Rails 最早提出,遵循标准的 ORM 模型:表映射到记录,记录映射 到对象,字段映射到对象属性。配合遵循的命名和配置惯例,能够很大程度的快速实现模型的操作,而 且简洁易懂。ActiveRecord 的主要思想是:1. 每一个数据库表对应创建一个类,类的每一个对象实例对应于数据库中表的一行记录;通常表的 每个字段在类中都有相应的 Field;2. ActiveRecord 同时负责把自己持久化,在 ActiveRecord 中封装了对数据库的访问,即 CURD;3. ActiveRecord 是一种领域模型(Domain Model),封装了部分业务逻辑;ActiveRecord 比较适用于:1. 业务逻辑比较简单,当你的类基本上和数据库中的表一一对应时, ActiveRecord 是非常方便的,即 你的业务逻辑大多数是对单表操作;2. 当发生跨表的操作时, 往往会配合使用事务脚本(Transaction Script),把跨表事务提升到事务脚本 中;3. ActiveRecord 最大优点是简单, 直观。 一个类就包括了数据访问和业务逻辑. 如果配合代码生成器 使用就更方便了;这些优点使 ActiveRecord 特别适合 WEB 快速开发。12ThinkPHP2.0 完全开发手册2.1.7单一入口单一入口通常是指一个项目或者应用具有一个统一(但并不一定是唯一)的入口文件,也就是说项 目的所有功能操作都是通过这个入口文件进行的,并且往往入口文件是第一步被执行的。单一入口的好处是项目整体比较规范,因为同一个入口,往往其不同操作之间具有相同的规则。另 外一个方面就是单一入口带来的好处是控制较为灵活,因为拦截方便了,类似如一些权限控制、用户登 录方面的判断和操作可以统一处理了。或者有些人会担心所有网站都通过一个入口文件进行访问,是否会造成太大的压力,其实这是杞人 忧天的想法。2.2 获取 ThinkPHP获取 ThinkPHP 的方式很多,官方网站( )是最好的下载和文档获取来源。 最新的下载版本可以在/Down 下载到。你还还可以通过 SVN 获取最新的更新版本。SVN 地址: 完整版本/svn/trunk核心版本/svn/trunk/ThinkPHP更多的 ThinkPHP 相关资源:Google 项目地址:/p/thinkphp/SF 项目地址:/projects/thinkphp13ThinkPHP2.0 完全开发手册ThinkPHP 无需任何安装,直接拷贝到你的电脑或者服务器目录下面即可。没有入口文件的调用,ThinkPHP 不会执行任何操作。2.3 关于版本本完全手册的内容主要针对最新的 ThinkPHP 2.0 版本,尽管有些功能在之前的版本上面也能使用, 但是我们不建议在使用 1.5 版本或者更早版本开发的过程中参考(事实上,1.*以后的每个发布版本都有 详细的文档)。2.*版本的体系架构和 2.0 版本是保持一致的,因此对于以后的 2.*版本,本手册中涉及 的内容基本上可以适用。如有变更,会在最新的发布版本中注明。2.4 环境要求ThinkPHP 可以支持 Windows/Unix 服务器环境,可运行于包括 Apache、IIS 和 nginx 在内的多种 WEB 服务器和模式,需要 PHP5.0 以上版本支持,支持 Mysql、MsSQL、PgSQL、Sqlite、Oracle、Ibase 以及 PDO 等多种数据库和连接。框架本身没有什么特别模块要求,具体的应用系统运行环境要求视开发 所涉及的模块。ThinkPHP 底层运行的内存消耗极低,而本身的文件大小也是轻量级的,因此不会出现空 间和内存占用的瓶颈。对于刚刚接触 PHP 或者 ThinkPHP 的新手,我们推荐使用集成开发环境 WAMPServer(/en/ 是一个集成了 Apache、PHP 和 MySQL 的开发套件,而且可以支持不 同 PHP 版本的切换)来使用 ThinkPHP 进行本地开发和测试。14ThinkPHP2.0 完全开发手册2.5 许可协议ThinkPHP 遵循 Apache2 开源协议发布。Apache Licence 是著名的非盈利开源组织 Apache 采用的 协议。该协议和 BSD 类似,鼓励代码共享和尊重原作者的著作权,同样允许代码修改,再作为开源或商 业软件发布。需要满足的条件:1 需要给代码的用户一份 Apache Licence ;2 如果你修改了代码,需要在被修改的文件中说明;3 在延伸的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议,商标,专利声明 和其他原来作者规定需要包含的说明;4 如果再发布的产品中包含一个 Notice 文件,则在 Notice 文件中需要带有 Apache Licence。你可 以在 Notice 中增加自己的许可,但不可以表现为对 Apache Licence 构成更改。具体的协议参考:/licenses/LICENSE2.0。15ThinkPHP2.0 完全开发手册3架构设计ThinkPHP 遵循了简洁实用的设计原则,兼顾开发速度和执行速度的同时,也注重易用性。新版在性 能提升 100%的同时,还保留了足够的扩展机制。下面这部分内容会对 ThinkPHP 框架的整体思想和架构 体系作简要的描述
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新疆神火煤电有限公司电解铝大修渣无害化处理综合利用项目环评报告
- 工业废水处理与排放标准
- 工业智能化技术发展趋势
- 工业机器人技术与自动化的结合
- 工业机器人及其在生产自动化中的运用
- 工业机器人技术发展及产业应用
- 工业设计中的空间美学应用研究
- 工业自动化技术进展与应用
- 工作生活平衡下的女性乳房保护
- 4s店返修管理制度
- 国家安全共同守护-国家安全教育日主题班会课件-2024-2025学年初中主题班会课件
- 清华大学语文试题及答案
- 机动车环检试题及答案
- 学校德育教育的有效方法研究
- 2025年上半年民航医学中心(民航总医院)招聘应届毕业生64人重点基础提升(共500题)附带答案详解-1
- 股骨头坏死中医护理常规
- 水稳施工技术课件
- 父母育儿压力量表(PSI)
- 河北省部分校2024-2025学年九年级下学期开学测试历史试题(含答案)
- 智能机器人技术研发战略合作协议
- 233KWh 定制户外一体柜储能系统项目技术方案
评论
0/150
提交评论