词条 | thinkphp |
释义 | ThinkPHP是一个开源的PHP框架,是为了简化企业级应用开发和敏捷WEB应用开发而诞生的。最早诞生于2006年初,原名FCS,2007年元旦正式更名为ThinkPHP,并且遵循Apache2开源协议发布。早期的思想架构来源于Struts,后来经过不断改进和完善,同时也借鉴了国外很多优秀的框架和模式,使用面向对象的开发结构和MVC模式,融合了Struts的Action和Dao思想和JSP的TagLib(标签库)、RoR的ORM映射和ActiveRecord模式,封装了CURD和一些常用操作,单一入口模式等,在模版引擎、缓存机制、认证机制和扩展性方面均有独特的表现。 简介ThinkPHP可以支持WIN/Unix服务器环境,正式版需要PHP5.0以上版本支持,支持Mysql、PgSQL、Sqlite以及PDO等多种数据库,ThinkPHP框架本身没有什么特别模块要求,具体的应用系统运行环境要求视开发所涉及的模块。 使用ThinkPHP,你可以更方便和快捷的开发和部署应用,当然不仅仅是企业级应用,任何PHP应用开发都可以从ThinkPHP的简单、兼容和快速的特性中受益。简洁、快速和实用是ThinkPHP发展秉承的宗旨,为此ThinkPHP会不断吸收和融入更好的技术以保证其新鲜和活力,提供WEB应用开发的最佳实践。 作为一个整体开发解决方案,ThinkPHP能够解决应用开发中的大多数需要,因为其自身包含了底层架构、兼容处理、基类库、数据库访问层、模板引擎、缓存机制、插件机制、角色认证、表单处理等常用的组件,并且对于跨版本、跨平台和跨数据库移植都比较方便。并且每个组件都是精心设计和完善的,应用开发过程仅仅需要关注您的业务逻辑。 ThinkPHP遵循 Apache2 开源许可协议发布,意味着用户可以免费使用ThinkPHP,甚至允许把用户的ThinkPHP应用采用商业闭源发布。 具体介绍基本介绍ThinkPHP是一个快速、兼容而且简单的轻量级国产PHP开发框架,诞生于2006年初,原名FCS,2007年元旦正式更名为ThinkPHP,遵循Apache2开源协议发布,从Struts结构移植过来并做了改进和完善,同时也借鉴了国外很多优秀的框架和模式,使用面向对象的开发结构和MVC模式,融合了Struts的思想和TagLib(标签库)、RoR的ORM映射和ActiveRecord模式,封装了CURD和一些常用操作,单一入口模式等,在模版引擎、缓存机制、认证机制和扩展性方面均有独特的表现,也已经越来越多地受到国内PHP开发人员的认可。 ThinkPHP的几个重要的概念要掌握ThinkPHP,首先要了解其中的几个重要概念,对于熟悉Java开发的朋友,应该很容易理解下面的一些概念。 Action对象:和Struts框架的Action类似,Action对象主要提供应用逻辑的控制和处理,属于ThinkPHP的控制层,由核心的App类完成模块和操作的解析后直接转交给相应的Action对象处理。应用类中的所有Action对象都继承系统的Action基类。 Dao对象:是指DataAccessObject(数据访问对象),Dao设计模式把底层的数据访问逻辑和业务逻辑分开,夹在业务层与数据层中间,用于数据库访问和操作。可以针对单表和多表操作。ThinkPHP中的Dao对象属于建立在抽象数据库访问层之上的事务性对象。 VO对象:是指ValueObject(数据对象),更加精确的说是业务对象,因为VO对象是存活在业务层的,供业务逻辑使用的。VO对象和数据表存在一种映射关系,VO对象的每个属性对应数据表(或者视图)的一个字段,你完全可以添加其他非数据表字段的VO对象属性,以用于业务逻辑操作,例如关联字段。VO对象有个特殊的保留属性_info,是一个数组变量,用来保存该VO对象的一些特殊信息。和VO对象对应的概念还有PO(持久数据对象),VO和PO的概念都来自于O/RMapping(ObjectRelationalMapping,对象关系映射),PO只能用在数据层(也就是说PO对象的属性必须和数据表一一对应),VO用在业务逻辑层和表示层(可以有自己的额外属性)。各层操作属于该层自己的数据对象,这样就可以降低各层之间的耦合,便于以后系统的维护和扩展。如果将PO用在各个层中就相当于我们使用全局变量,我们知道在OO设计非常不赞成使用全局变量。 VoList对象:在ThinkPHP框架中,把查询后的数据集(ResultSet)转换成数据列表对象,也就是VOLIST对象,和ResultSet对象不同的是每个记录就相当于一个VO对象。在VOLIST对象中可以方便地遍历和操作VO对象。VO对象和VOLIST对象都属于ThinkPHP框架中的实体对象,是数据操作的基本元素。如果你在开发过程中没有使用Dao模式,而是通过数据库驱动类直接操作数据库,那么返回的是ResultSet对象。ThinkPHP系统提供了从ResultSet对象转换为VOLIST对象的方法。 ThinkPHP的分层架构ThinkPHP的分层架构采用三层架构模式: 表现层:包含模板视图、用户界面、JS、Flash等通过模板引擎的支持,可以使用标签定义简化表现层的定义工作。 业务层:包含业务接口层、业务逻辑层、实体层、数据访问层Action控制器作为业务接口层,提供系统各种业务操作的入口。因此,不提倡在控制器类中写过多的业务逻辑代码,虽然说很难严格控制。具体的业务逻辑应该封装到数据访问对象(Dao)类中实现,如果觉得过于复杂,还可以把子业务在Helper类中包装后统一调用。业务处理过程一般会构造出业务实体对象(如Vo对象),对业务实体对象的存取通过数据访问层完成。数据访问层把实体对象和数据库数据之间建立映射关系,并且封装了通用的数据操作。 数据层:目前支持的数据库有MySql、MsSql、PgSql、Oracle、Sqlite,最新版本已经提供PDO的支持,数据库的选用和业务逻辑没有关系。 特性简单易用的MVC模式 模型(M):模型的定义由Model类来完成。Model类位于项目目录下面的LibModel目录。控制器(C):应用控制器(核心控制器)和Action控制器都承担了控制器的角色,区别在于Action控制器完成业务过程,而应用控制器(App类)负责调度控制。Action控制器位于项目目录下面的LibAction目录。 视图(V):模板的实现是和框架无关的,做到了100%分离,可以独立预览和制作。模板目录位于项目目录下面的Tpl目录。 独创的核心编译和项目编译机制 ThinkTemplate是一个使用了XML标签库技术的编译型模板引擎,支持两种类型的模板标签,使用了动态编译和缓存技术,而且支持自定义标签库。其特点包括: 1)支持XML标签库和普通标签的混合定义; 2)编译一次,下次直接运行而无需重新编译; 3)模板文件更新后,自动更新模板缓存; 4)自动加载当前操作的模板缓存文件,无需指定模板文件名称; 5)支持编码转换和Content-Type更换; 6)模板变量输出前缀支持,避免变量名称冲突; 7)模板常量替换,无需设置模板变量; 8)支持变量组合调节器和格式化功能; 9)支持替换其它模板引擎插件使用; 10)支持获取模板页面内容 内置XML模板引擎,支持标签库 富模型支持 1)聚合模型: 聚合模型是一种虚拟模型,用于把数据表的字段抽象话,更加容易理解和操作。 我们可以把数据表中的某些属性进行数据封装,这样就把枯燥的数据表字段赋予更好的可读性。 2)静态模型: 静态模型可以让模型的数据静态化,而不需要频繁和数据库打交道,可以用于不经常不变的数据表。而且ThinkPHP在ORM层上面模拟实现了数据库的视图功能,这是ThinkPHP独创的一项技术,使得多表的关联查询具有更高的效率和可操作性,而无需定义复杂的关联关系,让关联关系更加浅显易懂。 有些时候,数据表的数据一旦添加后就不再容易变化,我们更希望把这样的模型数据静态化,而不需要再次访问数据库。ThinkPHP支持静态模型的概念,一旦把模型设置为静态,那么会在第一次初始化的时候获取数据表的全部数据,并生成缓存,以后不会再连接数据库。而只需要直接访问模型的dataList数据即可。 3)视图模型 ThinkPHP在ORM模型里面模拟实现了数据库的视图模型,该功能可以用于多表查询。 要定义视图对象,需要设置viewModel为true,然后设置viewFields属性即可。 CURD和操作高度自动化支持 ThinkPHP提供了灵活和方便的数据操作方法,不仅实现了对数据库操作的四大基本操作(CURD):创建、读取、更新和删除的实现,还内置了很多实用的数据操作方法,提供了ActiveRecords模式的最佳体验。 丰富的查询语言支持 ThinkPHP大多数情况使用的都是对象查询,因为充分利用了ORM查询语言,了解查询条件的定义对使用对象查询非常有帮助,对于复杂的查询,或者从安全方面考虑,可以使用HashMap对象或者索引数组来传递查询条件。 目录结构自动创建THINKPHP目录结构 ThinkPHP具有项目目录自动创建功能,你只需要定义好项目的入口文件,第一次执行入口文件的时候,系统会自动创建项目的相关目录结构,如果是linux环境下面需要给项目入口文件里面指定的路径设置可写权限。 分布式数据库支持 ThinkPHP的模型支持主从式数据库的连接,配置DB_DEPLOY_TYPE为1可以采用分布式数据库支持。 多数据库连接和切换支持 如果需要在特殊的时候连接多个数据库,那么可以尝试使用ThinkPHP的多数据库连接特性:包括相同类型的数据库和不同类型的数据库。(注意:所谓的相同类型数据库的定义是指和项目配置文件或者模型的数据库连接的数据库类型相同。) ActiveRecords模式和丰富的ROR特性 ThinkPHP实现了ActiveRecords模式的ORM模型,采用了非标准的ORM模型:表映射到类,记录(集)映射到对象,字段属性映射到对象的虚拟属性。最大的特点就是使用方便,从而达到敏捷开发的目的。 灵活简单的项目配置 ThinkPHP提供了灵活的配置功能,采用最有效率的PHP返回数组方式定义,支持惯例配置、项目配置、调试配置和模块配置,并且会自动生成配置缓存文件,无需重复解析的开销。对于有些简单的应用,你无需配置任何配置文件,而对于复杂的要求,你还可以增加模块配置文件,另外ThinkPHP的动态配置使得你在开发过程中可以灵活的调整配置参数。 ThinkPHP在项目配置上面创造了自己独有的分层配置模式,其配置层次体现在:惯例配置-->项目配置-->模块配置-->操作(动态)配置,优先顺序从右到左(在没有生效的前提下)。 模型自动验证和处理 系统内置了数据对象的自动验证功能,而大多数情况下面,数据对象是由表单提交的$_POST数据创建。需要使用系统的自动验证功能,只需要在Model类里面定义$_validate属性,是由多个验证因子组成的数组,支持的验证因子格式:验证字段,验证规则,错误提示,验证条件,附加规则,验证时间。 静态页面生成和多元化缓存机制 ThinkPHP内置了静态缓存的功能,并且支持静态缓存的规则定义。要使用静态缓存功能,需要开启HTML_CACHE_ON参数,并且在项目配置目录下面增加静态缓存规则文件htmls.php。 丰富的数据库及PDO支持 SEO和URL路由支持 AJAX支持 易扩展的系统基类库 系统基类库 ThinkPHP框架通过基类库的概念把所有系统类库都集成在一起,包括ThinkPHP的核心类库。 目前的基类库分成Think核心类库、ORG扩展类库,在这主要介绍的是核心基类库,核心基类库的作用是完成框架的通用性开发而必须的基础类和常用工具类等,包含有: Think.Core 核心类库包 Think.Db 数据库类库包 Think.Util 系统工具类库包 Think.Template 内置模板引擎类库包 Think.Exception 异常处理类库包函数库 ThinkPHP内置了一个系统公共函数库,提供了一些系统需要的函数,系统函数库位于ThinkPHP的Common目录下面,名称为functions.php。 每个项目可以定义自己的函数库,位于项目的Common目录下面的common.php文件。 如果项目在Common目录下面有定义自己的common.php文件,框架会在初始化的时候自动导入,而无需自己导入。 匹配导入 Import方法是ThinkPHP内建的类库和文件导入方法,提供了方便和灵活的类似于命名空间的文件导入机制。 自动编码转换 ThinkPHP框架的文件全部采用UTF-8编码格式,UTF-8的支持和自动输出编码转换的功能让页面表现更加灵活。您可以配置输出的页面编码格式,如gb2312等(默认采用UTF-8输出)。系统根据配置文件中设置的编码格式自动对页面进行编码转换,支持iconv和mb_string两种方式,为了提高效率,如果系统的模板编码设置和输出编码设置项相同,则不会进行编码转换。ThinkPHP可以设置模板编码、输出编码和数据库编码,并自动完成转换工作,让你的应用不再受编码的苦恼。 组件和插件支持 基于角色的权限控制体系 企业级的应用是离不开安全保护的,ThinkPHP以基于Spring的Acegi安全系统作为参考原型,并做了简化,以适合目前的ThinkPHP结构,提供了一个多层的、可定制的安全体系来为应用开发提供安全控制。安全体系中主要有: 安全拦截器、认证管理器、决策访问管理器 、运行身份管理器。 更新记录[2.1版本]2011-4-30 这次的重点更新是在核心应用上的改造和效率方面的提升,主要体现在: URL路由灵活模式,支持常规路由定义,正则路由匹配 对比2.0版本,新的路由模式更体贴和应用更方便,同时在执行效率上也得到了更简洁而有效的处理。最重要的是定义路由将更简单和直接,并且可选择使用独立文件定义或是直接配置定义。 2.1版本对分组模式完善了细节流程上的解析机制,增加了实用的常量定义和模板替换,同时添加了对二级域名的友好支持,对项目部署提供了更多方便 ThinkPHP内置模板引擎舍弃了原来xml模式的解析,直接改由类属性进行定义标签,既减少了文件加载,提升了解析效率,在自定义标签和标签扩展上,也更加简单和方便了 允许项目指定编译缓存文件定义 系统函数库functions列入核心编译文件,不再默认绑定到核心编译 以上两项更新虽微,但实际上意义非凡,对于多项目多应用同时布署架构时会起到非常重要的作用,核心的自由度更宽更广了。 改进tag函数,插件机制可以直接定义要执行的行为 项目初始化提供新的可自定义的部署模式 允许自定义项目首次运行时的访问处理方式,系统由原来的简单成功提示,改为探针模式友好提示,对于使用ThinkPHP部署的项目,在初始运行时将方便地提供服务器相关信息,对是否支持ThinkPHP运行环境进行探测并报告和提出建议。 提供AMF模式支持 提供PhpRPC模式(感谢vanvvdot提供扩展) lite模式增强,支持使用内置模板引擎 数据插入时允许进行更新操作 提供了更简洁的连贯操作方式的数据库切换 新增模板常量、变量定义等实用标签 其它一些应用细节处理可对比svn更新记录 Images图像类恢复图片水印支持 Model类恢复批量插入数据的addAll方法 优化项目核心运行进程细节,去掉不常用功能。 优化系统进程统计处理,提供G函数可进行记录和统计。 完善了多语言在各服务器环境下的兼容性统一 完善了RelationModel方法兼容问题 完善了序列化字段处理 完善了数据编辑的时候唯一检测的验证 增加是否记录异常信息日志开关 LOG_EXCEPTION_RECORD 去除了原svn上的二级域名支持 去除了原svn上的前后置判断处理 去除了个别不通用功能和配置 去除了URL重定向处理,减少HTTP请求的同时,也避免了因此带来的一些错误。 对于以上已去除的功能开关不再生效 [1.0.4 版本] 2008-5-16 修正关联写入和数据字段过滤的冲突 修正哈希子目录缓存方式 模块配置文件命名改为:模块名+_config.php 修正Compare标签 修正CX标签库的判断标签 修正模板引擎的IF标签的条件BUG 修改多数据库连接和切换机制,取消addConnect方法的eqType参数,避免了因来回切换的时候的错误 修正Db缓存和Sqlite缓存的数据过期判断 增加项目配置检测,如果项目配置文件发生修改,则重新生成编译项目缓存。 增加跳转页面模板和404模板配置配置方式和Action类的display方法templateFile参数一致,默认配置: 'ACTION_JUMP_TMPL'=> 'Public:success', 'ACTION_404_TMPL'=> 'Public:404' Action类增加404操作方法页面跳转操作和404操作支持模板文件配置 修正html标签库的link和import标签 增加数据查询的IS NULL 和 IS NOT NULL支持 修正连贯操作的一些警告错误 完善join分析 支持left right等方式 修正模板引擎在开启短标签的情况下无法正常输出xml标识的问题 修正ORG.Date.Date类的maxDayOfMonth方法 完善多数据库连接的切换 修改命令行自动创建工具build 修正连贯操作的field方法的判断错误 修正Db类的一处where条件判断的小问题 rand_string加上中文随机字符串生成 修正兼容方法json_encode对布尔值的判断 修正ArrayList类的addall方法 修正max min avg sum等查询方法返回浮点型数据错误的问题 修正数组方式查询的自己使用Like问题 iterate标签增加mod属性,用于计算循环变量的取模替换原来的odd属性 增加Input类,用于输入数据管理 删除已经废弃的目录检查插件 优化模板引擎解析,避免多次实例化模板解析类并简化模板解析类的写法,去掉架构方法定义 修改mobile验证的正则 增加了分页类关于负数的判断 部分CX标签的属性可以支持特殊模板变量 F方法生成的文件会自动加上THINK_PATH判断,避免直接执行 取消了当指定模块和操作不存在的时候执行默认模块和默认操作,由用户自己定义空模块和空操作来处理。 增加了连贯操作的data方法,用于指定要操作的数据 去掉了已经废弃的三个配置参数:DB_CACHE_ON DB_CACHE_TIME DB_CACHE_MAX 增加表单提交的MAGIC_QUOTES_GPC判断 model类的query和execute方法支持使用__TABLE__字符串系统会自动替换成当前模型对应的表名 调整了空操作和直接判断模板文件的顺序空操作优先执行 修正Cookie类支持关闭浏览器就失效的情况设置COOKIE_EXPIRE为0或者空字符串或者在使用的时候传递参数0 Cookie::set($name,$value,0); 项目编译缓存文件也加上是否去掉注释的开关 [1.0.3 版本] 2008-3-16 增加空模块支持 如果指定的模块不存在会首先定位是否存在Empty模块 增加核心编译文件的去除空白和注释的开关,在入口文件定义 STRIP_RUNTIME_SPACE 常量为false 可以关闭去除空白和注释 Action缓存由原来的userCache成员属性控制改为项目参数 ACTION_CACHE_ON 控制,便于动态控制 增加数据库字段缓存的开关 惯例配置增加DB_FIELDS_CACHE 用以设置数据库字段是否缓存,默认进行缓存 修正xcache和sqlite缓存方式的读写次数记录 使用视图模型的时候,如果主键是id,不需要再定义getPk方法 修正多语言和多模板的cookie问题 入口文件免设置APP_NAME APP_PATH 完善Cookie类 修正模板检查的时候组件化的支持 模型类的查询操作支持连贯方法 去掉了一些废弃的惯例配置参数,包括:DATA_CACHE_ON 和 DATA_CACHE_MAX 惯例配置增加了DATA_CACHE_SUBDIR参数控制文件缓存方式是否自动使用子目录哈希缓存 在项目根目录不存在的情况下自动创建 完善对跨库查询的支持 目录自动创建支持写入安全文件 [ 1.0.2 ] 2008-2-21 Model类增加toArray方法 修正因Log类的改动导致Trace错误信息无法正常显示的问题 数据查询返回的数据集由ArrayObject对象改成数组 修正Model类的create方法在定义字段映射的下面的bug 修正虚拟模型下面create方法的bug Model类的facade方法增加数据表字段的检测 优化Image类的showAdvVerify方法 修正标签库的compare标签 Trace配置文件由原来的_trace.php更名为trace.php 项目调试配置文件由原来的_debug.php更名为debug.php 项目配置文件由原来的_config.php更名为config.php 路由定义文件由原来的_routes.php 更名为 routes.php 静态定义文件由原来的_htmls.php 更名为 htmls.php Model类的create方法无需type参数,自动判断新增和编辑模型数据 增加第一次运行目录自动生成功能(只需要定义入口文件) 默认项目编译缓存目录为Temp目录 [ 1.0.1 ] 2008-2-2 修正Db类在Oracle下面的parseLimit方法判断 优化数据库驱动类的查询结果获取 Model 类增加字段的表达式插入和更新支持 完善了Db类的条件查询字段中带有空格的处理 Model类增加了delConnect方法用于删除动态增加的数据库连接 增强了分布式数据库的支持 可以设置是否需要读写分离 Model类增加智能切换功能 switchConnect方法可以自动识别是否是相同的数据库连接类型 增加了组件模块的URL分割定义配置 COMPONENT_DEPR 包括对操作链的设置采用相同的参数定义 修正Model类的count等统计方法会自动缓存的问题 DB类默认关闭查询缓存 修正RBAC组件的权限判断 修正组件模块方式下面的模板文件../Public的替换 修正Html标签库的list标签的actionlist属性的支持 修正PDO类在某些数据库下面的getAll方法的BUG 增加核心缓存文件的开关功能 在入口文件里面设置 CACHE_RUNTIME 为 false 修正了使用组件模块的时候模板文件中__URL__的解析问题 修正模板和语言的切换cookie Model类增加addConnect和switchConnect方法 用于支持多数据库的连接 修正了语言包的缓存导致切换语言无效的问题 Db类增加多数据库连接的内置支持 修正Model类在某些数据库下面where条件表达式不支持where 1 的情况 Db类增加getLastSql方法用于获取最后一次查询的sql语句 完善Log类的操作以及优化错误日志的写入 修正model的数据库连接配置读取 在Ajax返回之前保存日志记录 完善compare标签 改进Vendor函数的baseUrl参数定义 改进项目语言包的定义 不同语言分成不同子目录 简化了query方法的数据库缓存 增加clearCache方法,用于清空项目相关缓存目录 增加firebird数据库驱动支持 修正pgsql驱动 修正~app.php 文件的编译缓存路径的问题 增加编译缓存路径的设置 RUNTIME_PATH [ 1.0.0 ] 2007-12-25 优化了执行效率和内存开销 Import方法增加同名检测和类检测 完善PHP 5.2.0以下版本的支持 去掉了核心对Config、Language、Cookie和Session类库的依赖 去掉了Action类内置的默认操作 改进了MySqli的驱动类库 修正了主键不是自动增长的时候Model的add方法返回错误 修正了mysqli的escape_string方法 修正了PDO的连接params参数问题 修正了Model的findAll的关联查询问题 修正了Model类的getModelName方法问题 修正了RBAC的模块大小写设置 去掉volist resultset标签,均作为iterate标签的别名 增加了项目编译机制和核心类库编译机制 标签库定义增加标签的别名定义 XML模版结束标签增加对空格的支持 增加compare标签和eq neq gt egt lt elt heq 和nheq标签别名 增加了多模版和多语言的开关 RBAC认证增加了操作的认证设置,之前只支持模块的认证设置 thinkphp大事记ThinkPHP发展历程,无数TPer一起见证了ThinkPHP的成长: 2006-01-15 ThinkPHP的雏形版本FCS0.6.0发布 2006-02-12 (元霄节)发布FCS 0.6.1 版本,Google讨论组成立 2006-03-15 FCS 0.7.0版本发布 2006-03-23 第一个QQ群成立 2006-05-07 FCS 0.8版本发布 2006-10-25 FCS 0.9.0版本发布 2006-12-25 SF项目和Google网站ThinkPHP项目申请完成 2007-01-01 FCS正式更名为ThinkPHP 2007-01-08 ThinkPHP 0.9.5版发布同期官方网站开通 2007-02-21 TOPThink社区暨新版ThinkPHP官方网站开通,并提供社区支持 2007-02-25 发布ThinkPHP 0.9.6版本,完成FCS到ThinkPHP的正式迁移 2007-04-29 ThinkPHP发布0.9.7版本 2007-07-01 ThinkPHP发布0.9.8版本 2007-10-15 ThinkPHP发布1.0.0RC1版本,完成PHP5的重构 2007-12-15 ThinkPHP发布1.0.0正式版本标志着ThinkPHP步入轨道 2008-10-01 ThinkPHP发布1.0.3正式版本 2008-12-25 ThinkPHP发布1.5正式版本并启动商业化支持服务,ThinkPHP进入稳定发展 2009-05-01 ThinkPHP 发布1.6.0RC1版本 2009-10-01 ThinkPHP发布2.0版本完成新的重构和飞跃,这是一次划时代的版本 2012-04-05 ThinkPHP发布3.0版本 庆祝ThinkPHP发布6周年 在线手册目录1简介2入门基础2.1基础概念 2.2获取ThinkPHP 2.3关于版本 2.4环境要求 2.5许可协议 3架构设计3.1系统特性 3.2目录结构 3.3MVC分层 3.4执行流程 3.5命名规范 3.6入口文件 3.7项目编译 3.8URL访问 3.9控制器 3.10模型 3.11数据库抽象层 3.12视图 3.13模板引擎 3.14函数库 3.15类库 3.16扩展 4构建应用4.1开发流程 4.2入口文件 4.3自动生成 4.4项目配置 4.5业务逻辑 4.6模板定义 4.7运行应用 5开发指南5.1配置 5.2控制器 5.3模型 5.4视图 5.5错误和日志 5.6调试 5.7缓存 5.8安全 5.9部署 5.10杂项 6扩展指南6.1类库扩展 6.2应用扩展 6.3控制器扩展 6.4模型扩展 6.5驱动扩展 6.6Widget扩展 6.7行为扩展 6.8标签库扩展 6.9模板引擎扩展 6.10模式扩展 7模板指南7.1变量输出 7.2使用函数 7.3系统变量 7.4快捷输出 7.5默认值输出 7.6包含文件 7.7导入文件 7.8Volist标签 7.9Foreach标签 7.10Switch标签 7.11比较标签 7.12Range标签 7.13Present标签 7.14Empty标签 7.15Defined标签 7.16IF标签 7.17标签嵌套 7.18使用PHP代码 7.19原样输出 7.20模板注释 7.21引入标签库 7.22修改定界符 8附录8.1常量参考 8.2配置参考 8.3函数参考 8.4类库参考 8.5关于升级 8.6代码重构 8.7开源应用 8.8典型案例 8.9大事记 8.10鸣谢 |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。