您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 工作范文 > THINKPHP开发手册(完整版)
TP开发手册完整版:系统特性ThinkPHP是一个性能卓越并且功能丰富的轻量级PHP开发框架,本身具有很多的原创特性,并且倡导大道至简,开发由我的开发理念,用最少的代码完成更多的功能,宗旨就是让WEB应用开发更简单、更快速。从1.*版本开始就放弃了对PHP4的兼容,因此整个框架的架构和实现能够得以更加灵活和简单。2.0版本更是在之前的基础上,经过全新的重构和无数次的完善以及改进,达到了一个新的阶段,足以达到企业级和门户级的开发标准。ThinkPHP值得推荐的特性包括:类库导入:ThinkPHP是首先采用基于类库包和命名空间的方式导入类库,让类库导入看起来更加简单清晰,而且还支持冲突检测和别名导入。为了方便项目的跨平台移植,系统还可以严格检查加载文件的大小写。URL模式:系统支持普通模式、PATHINFO模式、REWRITE模式和兼容模式的URL方式,支持不同的服务器和运行模式的部署,配合URL路由功能,让你随心所欲的构建需要的URL地址和进行SEO优化工作。编译机制:独创的核心编译和项目的动态编译机制,有效减少OOP开发中文件加载的性能开销。ALLINONE模式更是让你体验飞一般的感觉。ORM:简洁轻巧的ORM实现,配合简单的CURD以及AR模式,让开发效率无处不在。查询语言:内建丰富的查询机制,包括组合查询、复合查询、区间查询、统计查询、定位查询、动态查询和原生查询,让你的数据查询简洁高效。动态模型:无需创建任何对应的模型类,轻松完成CURD操作,支持多种模型之间的动态切换,让你领略数据操作的无比畅快和最佳体验。高级模型:可以轻松支持序列化字段、文本字段、只读字段、延迟写入、乐观锁、数据分表等高级特性。视图模型:轻松动态地创建数据库视图,多表查询不再烦恼。关联模型:让你以出乎意料的简单、灵活的方式完成多表的关联操作。分组模块:不用担心大项目的分工协调和部署问题,分组模块帮你解决跨项目的难题。模板引擎:系统内建了一款卓越的基于XML的编译型模板引擎,支持两种类型的模板标签,融合了Smarty和JSP标签库的思想,支持标签库扩展。通过驱动还可以支持Smarty、EaseTemplate、TemplateLite、Smart等第三方模板引擎。AJAX支持:内置AJAX数据返回方法,支持JSON、XML和EVAL格式返回客户端,并且系统不绑定任何AJAX类库,可随意使用自己熟悉的AJAX类库进行操作。多语言支持:系统支持语言包功能,项目和模块都可以有单独的语言包,并且可以自动检测浏览器语言自动载入对应的语言包。模式扩展:除了标准模式外,系统内置了Lite、Thin和Cli模式,针对不同级别的应用开发提供最佳核心框架,还可以自定义模式扩展。自动验证和完成:自动完成表单数据的验证和过滤,生成安全的数据对象。字段类型检测:字段类型强制转换,确保数据写入和查询更安全。数据库特性:系统支持多数据库连接和动态切换机制,支持分布式数据库。犹如企业开发的一把利刃,跨数据库应用和分布式支持从此无忧。缓存机制:系统支持包括文件方式、APC、Db、Memcache、Shmop、Eaccelerator和Xcache在内的多种动态数据缓存类型,以及可定制的静态缓存规则,并提供了快捷方法进行存取操作。扩展机制:系统支持包括类库扩展、驱动扩展、应用扩展、模型扩展、控制器扩展、标签库扩展、模板引擎扩展、Widget扩展、行为扩展和模式扩展在内的强大灵活的扩展机制,让你不再受限于核心的不足和无所适从,随心DIY自己的框架和扩展应用。目录结构新版的目录结构在原来的基础上进行了调整,更加清晰。一、系统目录(ThinkPHP框架目录)ThinkPHP.php框架的公共入口文件Common包含框架的一些公共文件、系统定义、系统函数和惯例配置等Lang系统语言文件Lib系统基类库目录Tpl系统模板目录Mode框架模式扩展目录Vendor第三方类库目录二、应用目录(项目目录)index.php项目入口文件(可以使用其他名称或者放置于其他位置)Common项目公共文件目录,一般放置项目的公共函数Conf项目配置目录,所有的配置文件都放在这里。Lang项目语言包目录(可选)Lib项目类库目录,通常包括Action和Model子目录Tpl项目模板目录,支持模板主题Runtime项目运行时目录,包括Cache(模板缓存)、Temp(数据缓存)、Data(数据目录)和Logs(日志文件)子目录上面的只是默认方式,项目下面的目录名称和结构是可以重新定义的。其实项目目录并不需要开发人员手动创建,只需要定义好项目的入口文件之后,系统会在第一次执行的时候自动生成项目必须的所有目录结构(前提是项目目录具有可写权限,这点在Linux环境下面需要注意)。可以看出新版的目录结构更加便于部署和配置,因为只有Runtime目录才是需要具备可写权限的,在Linux环境下面可以更加快速的部署和配置目录权限。三、部署目录当我们实际部署网站的时候,目录结构往往由于项目的复杂而变得复杂。我们推荐的部署目录结构如下:ThinkPHP系统目录(下面的目录结构同上面的系统目录)Home项目目录(下面的目录结构同上面的应用目录)Admin后台管理项目目录……更多的项目目录index.php网站的入口文件admin.php网站的后台入口文件如果采用分组模块的话可以简化为一个项目目录ThinkPHP系统目录(下面的目录结构同上面的系统目录)App项目目录Public网站公共目录index.php网站的入口文件项目的模板文件还是放到项目的Tpl目录下面,只是将外部调用的资源文件,包括图片JS和CSS统一放到网站的公共目录Public下面,分Images、Js和Css子目录存放,如果有可能的话,甚至也可以把这些资源文件单独放一个外部的服务器远程调用,并进行优化。这样部署的好处是系统目录和项目目录可以放到非WEB访问目录下面,网站目录下面可以只需要放置Public公共目录和index.php入口文件(如果是多个项目的话,每个项目的入口文件都需要放到WEB目录下面),从而提高网站的安全性。MVC分层MVC是一种将应用程序的逻辑层和表现层进行分离的方法。ThinkPHP也是基于MVC设计模式的。MVC只是一个抽象的概念,并没有特别明确的规定,ThinkPHP中的MVC分层大致体现在:模型(M):模型的定义由Model类来完成。控制器(C):应用控制器(核心控制器App类)和Action控制器都承担了控制器的角色,Action控制器完成业务过程控制,而应用控制器负责调度控制。视图(V):由View类和模板文件组成,模板做到了100%分离,可以独立预览和制作。有些时候,ThinkPHP并不依赖M或者V,也就是说没有模型或者视图也一样可以工作。甚至也不依赖C,这是因为ThinkPHP在Action之上还有一个总控制器,即App控制器,负责应用的总调度。在没有C的情况下,必然存在视图V,否则就不再是一个完整的应用。总而言之,ThinkPHP的MVC模式只是提供了一种敏捷开发的手段,而不是拘泥于MVC本身。执行流程基于ThinkPHP框架的应用程序组成和执行过程,(见附件)命名规范框架必然有其自身的一定规范,在ThinkPHP中亦然。下面是使用ThinkPHP应该尽量遵循的命名规范:类文件都是以.class.php为后缀(这里是指的ThinkPHP内部使用的类库文件,不代表外部加载的类库文件),使用驼峰法命名,并且首字母大写,例如DbMysql.class.php。函数、配置文件等其他类库文件之外的一般是以.php为后缀(第三方引入的不做要求)。确保文件的命名和调用大小写一致,是由于在类Unix系统上面,对大小写是敏感的(而ThinkPHP在调试模式下面,即使在Windows平台也会严格检查大小写)。类名和文件名一致(包括上面说的大小写一致),例如UserAction类的文件命名是UserAction.class.php,InfoModel类的文件名是InfoModel.class.php,函数的命名使用小写字母和下划线的方式,例如get_client_ipAction控制器类以Action为后缀,例如UserAction、InfoAction模型类以Model为后缀,例如UserModel、InfoModel方法的命名使用驼峰法,并且首字母小写,例如getUserName属性的命名使用驼峰法,并且首字母小写,例如tableName以双下划线“__”打头的函数或方法作为魔法方法,例如__call和__autoload常量以大写字母和下划线命名,例如HAS_ONE和MANY_TO_MANY配置参数以大写字母和下划线命名,例如HTML_CACHE_ON语言变量以大写字母和下划线命名,例如MY_LANG,以下划线打头的语言变量通常用于系统语言变量,例如_CLASS_NOT_EXIST_。数据表和字段采用小写加下划线方式命名,例如think_user和user_name特例:在ThinkPHP里面,有一个函数命名的特例,就是单字母大写函数,这类函数通常是某些操作的快捷定义,或者有特殊的作用。例如,ADSL方法等等,他们有着特殊的含义,后面会有所了解。另外一点,ThinkPHP默认使用UTF-8编码,所以请确保你的程序文件采用UTF-8编码格式保存,并且去掉BOM信息头(去掉BOM头信息有很多方式,不同的编辑器都有设置方法,也可以用工具进行统一检测和处理)。入口文件ThinkPHP采用单一入口模式进行项目部署和访问,无论完成什么功能,一个项目只有一个统一(但不一定是唯一)的入口。并且所有的项目的入口文件是类似的,入口文件主要完成的作用是:路径定义项目名称定义(可选)额外参数定义(可选)载入框架入口文件(必须)实例化一个App应用(必须)下面是一个标准的入口文件的写法:?php//定义ThinkPHP框架路径(相对于入口文件)define('THINK_PATH','../ThinkPHP');//定义项目名称和路径define('APP_NAME','Myapp');define('APP_PATH','.');//加载框架入口文件require(THINK_PATH./ThinkPHP.php);//实例化一个网站应用实例App::run();?项目编译ThinkPHP正式版本开始引入了新的项目编译机制,所谓的项目编译机制是指系统第一次运行的时候会自动生成核心缓存文件~runtime.php和项目编译缓存文件~app.php,这些编译缓存文件把核心和项目必须的文件打包到一个文件中,并且去掉所有空白和注释代码,因为存在一个预编译的过程,所以还会进行一些相关的目录检测,对于不存在的目录可以自动生成,这个自动生成机制后面还会提到。当第二次执行的时候就会直接载入编译过的缓存文件,从而省去很多IO开销,加快执行速度。项目编译机制对运行没有任何影响,预编译操作和其他的目录检测机制只会执行一次,因此无论在预编译过程中做了多少复杂的操作,对后面的执行没有任何效率的缺失。编译缓存文件,默认是自动生成在项目目录下面的Runtime目录下面。如果希望自己设置目录,可以在入口文件里面设置RUNTIME_PATH进行更改,例如define('RUNTIME_PATH','./MyApp/temp/');注意在Linux环境下面需要对RUNTIME_PATH目录设置可写权限。核心编译缓存文件~runtime.php包含的文件由系统的core.php文件决定,如果是采用了模式扩展的话,就由模式扩展入口文件决定。默认的核心模式下面包含了下面的一些文件:系统定义文件defines.php、系统函数库functions.php、系统基类Think、异常基类ThinkException、日志类Log、应用类App、控制器基类Action、视图类View。其他类库可以在操作方法中使用系统导入机制或者自
本文标题:THINKPHP开发手册(完整版)
链接地址:https://www.777doc.com/doc-5234712 .html