ThinkPHP,是为了简化企业级应用开发和敏捷WEB应用开发而诞生的
开源轻量级PHP框架。
产生背景
最早诞生于2006年初,2007年元旦正式更名为ThinkPHP,并且遵循Apache2开源协议发布。ThinkPHP从诞生以来一直秉承简洁实用的
设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进。
作为一个整体开发解决方案,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年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周年;
2012年10月08日, ThinkPHP发布3.1版本;
2012年11月11日, ThinkPHP3.1.2扩展包;
2013年05月09日,ThinkPHP发布3.1.3完整版;
2013年12月18日,ThinkPHP发布3.2
正式版;
2014年10月31日,ThinkPHP发布3.2.2完整版;
2015年12月11日,ThinkPHP 5.0 Beta 发布;
2017年02月27日,Thinkphp5.0.5完整版正式发布;
2018年05月02日,Thinkphp5.1.0RC版本发布;
2019年04月22日,Thinkphp6.0RC2版本发布;
2019年08月16日,Thinkphp6.0RC4版本发布;
2019年12月24日,Thinkphp6.0.1版本发布;
主要功能
简单易用
模型(M):模型的定义由Model类来完成。Model类位于项目目录下面的LibModel目录。
控制器(C):应用控制器(核心控制器)和Action控制器都承担了控制器的角色,区别在于Action控制器完成
业务过程,而应用控制器(App类)负责
调度控制。Action控制器位于项目目录下面的LibAction目录。
视图(V):模板的实现是和框架无关的,做到了100%分离,可以独立预览和制作。模板目录位于项目目录下面的Tpl目录。
独创机制
ThinkTemplate是一个使用了XML标签库技术的编译型
模板引擎,支持两种类型的模板标签,使用了
动态编译和缓存技术,而且支持自定义标签库。其特点包括:
1)支持XML标签库和普通标签的混合定义;
2)编译一次,下次直接运行而无需重新编译;
3)模板文件更新后,自动更新模板缓存;
4)自动加载当前操作的模板缓存文件,无需指定模板文件名称;
6)模板变量输出前缀支持,避免变量名称冲突;
7)模板常量替换,无需设置模板变量;
10)支持获取模板页面内容。
内置XML模板引擎,支持标签库
富模型支持
聚合模型是一种虚拟模型,用于把数据表的字段抽象化,更加容易理解和操作。
可以把数据表中的某些属性进行
数据封装,这样就把枯燥的数据表字段赋予更好的可读性。
静态模型可以让模型的数据静态化,而不需要频繁和数据库打交道,可以用于不经常改变的数据表。而且ThinkPHP在ORM层上面模拟实现了数据库的视图功能,这是ThinkPHP独创的一项技术,使得多表的关联查询具有更高的效率和可操作性,而无需定义复杂的
关联关系,让关联关系更加浅显易懂。
有些时候,数据表的数据一旦添加后就不再容易变化,把这样的模型数据静态化,而不需要再次访问数据库。ThinkPHP支持
静态模型的概念,一旦把模型设置为静态,那么会在第一次初始化的时候获取数据表的全部数据,并生成缓存,以后不会再连接数据库。而只需要
直接访问模型的dataList数据即可。
3)视图模型
ThinkPHP在ORM模型里面模拟实现了数据库的视图模型,该功能可以用于多表查询。
要定义视图对象,需要设置viewModel为true,然后设置viewFields属性即可。
CURD和操作高度自动化支持
ThinkPHP提供了灵活和方便的数据操作方法,不仅实现了对
数据库操作的四大基本操作(CURD):创建、读取、更新和删除的实现,还内置了很多实用的数据操作方法,提供了ActiveRecords模式的
最佳体验。
丰富的查询语言支持
ThinkPHP大多数情况使用的都是对象查询,因为充分利用了ORM查询语言,了解查询条件的定义对使用对象查询非常有帮助,对于复杂的查询,或者从安全方面考虑,可以使用HashMap对象或者
索引数组来传递查询条件。
ThinkPHP具有项目目录自动创建功能,需要定义好项目的入口文件,第一次执行入口文件的时候,系统会自动创建项目的相关目录结构,如果是linux环境下面需要给项目入口文件里面指定的路径设置可写权限。
ThinkPHP的模型支持主从式数据库的连接,配置DB_DEPLOY_TYPE为1可以采用
分布式数据库支持。
多数据库连接和切换支持
如果需要在特殊的时候连接多个数据库,那么可以尝试使用ThinkPHP的多数据库连接特性:包括相同类型的数据库和不同类型的数据库。(注意:所谓的相同类型数据库的定义是指和项目配置文件或者模型的数据库连接的数据库类型相同。)
ThinkPHP实现了ActiveRecords模式的ORM模型,采用了非标准的ORM模型:
表映射到类,记录(集)映射到对象,字段属性映射到对象的虚拟属性。最大的特点就是使用方便,从而达到
敏捷开发的目的。
灵活简单的项目配置
ThinkPHP提供了灵活的配置功能,采用最有效率的PHP返回数组方式定义,支持惯例配置、项目配置、调试配置和模块配置,并且会自动生成配置缓存文件,无需重复解析的开销。对于有些简单的应用,无需配置任何配置文件,而对于复杂的要求,可以增加模块配置文件,另外ThinkPHP的动态配置使得在开发过程中可以灵活的调整配置参数。
ThinkPHP在项目配置上面创造了自己独有的分层配置模式,其配置层次体现在:惯例配置-->项目配置-->模块配置-->操作(动态)配置,优先顺序从右到左(在没有生效的前提下)。
模型自动验证和处理
系统内置了
数据对象的自动验证功能,而大多数情况下面,数据对象是由表单提交的Array数据创建。需要使用系统的自动验证功能,只需要在Model类里面定义属性,是由多个验证因子组成的数组,支持的验证因子格式:验证字段,验证规则,错误提示,验证条件,附加规则,验证时间。
ThinkPHP内置了静态缓存的功能,并且支持静态缓存的规则定义。要使用静态缓存功能,需要开启
HTML_CACHE_ON参数,并且在项目配置目录下面增加静态缓存规则文件htmls.php。
系统基类库
ThinkPHP框架通过基类库的概念把所有系统类库都集成在一起,包括ThinkPHP的核心类库。
基类库分成Think核心类库、ORG扩展类库,在这主要介绍的是核心基类库,核心基类库的作用是完成框架的通用性开发而必须的基础类和常用工具类等,包含有:
Think.Core 核心类库包
Think.Db 数据库类库包
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,首先要了解其中的几个重要概念,对于熟悉
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以基于
Spring的
Acegi安全系统作为参考原型,并做了简化,以适合ThinkPHP结构,提供了一个多层的、可定制的安全体系来为应用开发提供安全控制。安全体系中主要有: 安全
拦截器、认证管理器、决策访问管理器 、运行身份管理器。
分层架构
表现层
包含模板视图、
用户界面、
JS、
Flash等通过
模板引擎的支持,可以使用标签定义简化表现层的定义工作。
业务层
包含业务接口层、
业务逻辑层、实体层、
数据访问层Action控制器作为业务接口层,提供系统各种业务操作的入口。因此,不提倡在控制器类中写过多的
业务逻辑代码,虽然说很难严格控制。具体的业务逻辑应该封装到
数据访问对象(Dao)类中实现,如果觉得过于复杂,还可以把子业务在Helper类中包装后统一调用。业务
处理过程一般会构造出业务
实体对象(如Vo对象),对业务实体对象的存取通过数据访问层完成。数据访问层把实体对象和数据库数据之间建立映射关系,并且封装了通用的
数据操作。
数据层
支持的数据库有MySql、MsSql、PgSql、
Oracle、Sqlite,最新版本已经提供
PDO的支持,数据库的选用和业务逻辑没有关系。
版本记录
ThinkPHP 5.0
正式版发布 2016/09/15
主要特性包括:
--------------------------------------------------------------
规范:遵循PSR-2、
PSR-4规范,Composer及
单元测试支持;
严谨:异常严谨的错误检测和安全机制,详细的日志信息,为开发
保驾护航;
灵活:减少核心依赖,扩展更灵活、方便,支持
命令行指令扩展;
API友好:出色的性能和REST支持、远程调试,更好的支持API开发;
高效:
惰性加载,及路由、配置和
自动加载的缓存机制;
ORM:重构的数据库、模型及关联,MongoDb支持;
--------------------------------------------------------------
相对于RC4版本,主要更新如下:
请求和路由:
数据库:
模型:
日志和缓存:
其他:
调整:
TinkPHP 3.2.2发布 2014/4/15
ThinkPHP3.2.2版本在修正一些BUG后,重写了模块的自动生成,并支持控制器和模型的批量生成,增加了
配置文件多格式支持,以及一些小的细节改进,该版本属于小版本更新。
1、应用支持包括PHP/JSON/INI/XML/
YAML以及自定义格式的配置文件;
2、支持模块的自动生成和控制器/模型的批量生成;
3、增加插件控制器的访问支持;
4、cookie函数增加httponly参数支持;
5、改进模型类的安全处理;
6、修正了3.2.1发布以来社区反馈的一些BUG(详见更新日志);
TinkPHP3.2.1发布 2014/2/14
相对于3.2.0版本,主要更新如下:
TinkPHP3.2发布 2013/12/18
模块化:3.2版本的架构专门为
模块化设计做了优化和调整,从而更适合企业级应用,当然这很大一部分得益于对
命名空间的支持以及自动加载机制。同时,会看到一个小的细节,ThinkPHP3.2版本自带了一个应用入口文件和应用目录。
驱动化:3.2版本在设计类库的时候尽量采用驱动式设计,对于同一功能在不同环境和类型的操作只需要配置驱动即可轻松移植,不需要改变现有代码,同时也让应用能够适用于更多更复杂的
运行环境。
云平台:3.2版本在底层核心就包含了对各种云平台的支持,通过定制不同的应用(场景)模式以及对应的驱动就可以轻松支持云平台的部署开发,可以实现在本地开发,然后直接无缝部署到云平台,已经支持的包括SAE和BAE3。
功能:
3.2版本在此前的3.1.3版本之上,引入了命名空间,强化了驱动化和行为,增强了模块化的概念和对云平台的支持,并改进了诸多的细节。
主要改进包括:
注意:3.2以上版本对PHP的版本要求为PHP5.3+ (不包含PHP5.3dev和
PHP6)
TinkPHP3.1.3发布 2013/05/09
更新
该版本针对3.1.2进行了一些改进和完善,主要包括:
针对PDO驱动和Sqlsrv驱动的完善,支持参数绑定;
增加变量安全获取和过滤的快捷方法I;
A和D方法支持跨分组调用;
修正JS代码可能对模版标签的混淆;
模型的where方法支持多次调用;
默认关闭页面压缩输出;
异常日志的纪录;
Action类的assign方法支持连贯操作;
修正上一版本的一些BUG;
TinkPHP3.1.2发布 2012/11/17
[更新]
独立分组功能
模板继承
模块和操作映射
分组支持单独配置默认模块和操作
核心编译过程的优化
SAE引擎升级
改进的分页类
ThinkPHP 3.1发布 2012/09/03
[更新]
更加安全的防护和过滤体系
MVC多层支持
Action参数绑定支持
模型命名范围支持
查询条件和SQL预处理功能
日志记录简化、增加IP支持
致命错误的捕获机制完善
页面Trace机制改进和分类显示支持
超过128项更新
2012-04-05
[更新]
Action参数绑定支持
模型类命名范围支持
全局系统变量安全过滤支持
增加IS_GET IS_POST IS_PUT 等请求类型常量
U函数对子域名部署的增强和优化
模型类增加filter连贯操作方法 用于对数据的安全过滤
Action类增加_
param方法支持 可以自动根据当前提交类型 获取参数
Action类的_get _
post方法支持多函数过滤
改进success和error方法
增加自动验证的规则
分组模式下模型分组可以自动加载
模型类增加
close方法 驱动类支持多数据库连接关闭
模型类增加表单提交字段
合法性检测 配置insert_fields 和 update_fields
增加DB_SLAVE_NO配置参数 用于指定读服务器的序号
优化模型的create方法的数据对象生成
自动验证的function和callback规则支持多字段
[3.0版本]2012-3-23
[修正]
修正视图模型扩展的checkOrder方法
修正U方法对默认分组的完善
修正Redis缓存类
修正sqlsrv驱动
修正模式扩展中的Model类
修正模型的where方法传人空参数的时候导致delete方法删除全部数据的问题
修正静态缓存读取行为扩展
修正Pgsql驱动
修正S方法的缓存有效期
修正Mongo驱动类
[删除]
取消TAG_NESTED_LEVEL配置参数,该参数已经无效
取消CheckTemplate行为扩展 并入核心App类的init方法
[增加]
App类增加action_name 行为标签位置 用于改变操作方法名
增加引擎扩展 SAE纳入第一个引擎扩展
增加ENGINE_PATH常量定义 用于引擎扩展使用
增加PATH_INFO的兼容判断功能
增加URL_PATHINFO_FETCH配置参数
增加FireShowPageTrace行为扩展 能将Trace信息输出到
火狐的firebug
增加Wincache缓存扩展驱动
[完善]
优化ThinkPHP入口文件
改进模块名的安全检测 取消异常抛出改成引导到空模块环节
改进Widget类的template属性处理,不区分大小写 方便定义
模型的field方法支持 field(true) 用法 表示获取
数据表的全部字段 (而不是*)
改进对mysql驱动的关键字
处理方法parseKey
改进模板引擎的标签别名解析 别名可以无需要定义解析方法
改进Db和
sqlite缓存驱动类对有效期参数的判断
规则路由定义支持完整匹配
改进模板检测的自定义模板目录支持
[调整]
模板
字符串替换定义TMPL_PARSE_STRING区分大小写
配置参数只支持一级不区分大小写 二级以下配置参数区分大小写调用
行为日志
记录类型改为Log::INFO 类型,方便通过配置文件 单独关闭相关行为日志显示和记录
checkLang行为扩展调整
语言包命名规范调整 项目公共语言包 common.php 分组语言包 分组名.php 模块语言包 分组名_模块名.php 或者 模块名.php
[2.1版本]2011-4-30
这次的重点更新是在核心应用上的改造和效率方面的提升,主要体现在:
URL路由灵活模式,支持常规路由定义,正则路由匹配
对比2.0版本,新的
路由模式更体贴和应用更方便,同时在执行效率上也得到了更简洁而有效的处理。最重要的是定义路由将更简单和直接,并且可选择使用独立文件定义或是直接配置定义。
2.1版本对分组模式完善了细节流程上的解析机制,增加了实用的常量定义和模板替换,同时添加了对
二级域名的友好支持,对项目部署提供了更多方便
ThinkPHP内置
模板引擎舍弃了原来xml模式的解析,直接改由
类属性进行定义标签,既减少了文件加载,提升了解析效率,在
自定义标签和标签扩展上,也更加简单和方便了
允许项目指定编译缓存文件定义
系统函数库functions列入核心编译文件,不再默认绑定到核心编译
以上两项更新虽微,但实际上意义非凡,对于多项目多应用同时部署架构时会起到非常重要的作用,核心的自由度更宽更广了。
改进tag函数,插件机制可以直接定义要执行的行为
项目初始化提供新的可自定义的部署模式
允许自定义项目首次
运行时的访问处理方式,系统由原来的简单成功提示,改为探针模式友好提示,对于使用ThinkPHP部署的项目,在初始运行时将方便地提供服务器相关信息,对是否支持ThinkPHP运行环境进行探测并报告和提出建议。
提供AMF模式支持
提供PhpRPC模式(感谢vanvvdot提供扩展)
数据插入时允许进行更新操作
提供了更简洁的连贯操作方式的数据库切换
新增模板常量、变量定义等实用标签
其它一些应用细节处理可对比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操作支持模板文件配置
增加数据查询的IS NULL 和 IS NOT NULL支持
修正连贯操作的一些警告错误
完善join分析 支持left right等方式
修正模板引擎在开启短标签的情况下无法正常输出xml标识的问题
修正ORG.Date.Date类的maxDayOfMonth方法
完善多数据库连接的切换
修改命令行自动创建工具build
修正连贯操作的field方法的判断错误
修正Db类的一处where条件判断的小问题
修正max min avg sum等查询方法返回
浮点型数据错误的问题
修正数组方式查询的自己使用Like问题
iterate标签增加mod属性,用于计算循环变量的取模替换原来的odd属性
删除已经废弃的目录检查插件
优化
模板引擎解析,避免多次实例化模板解析类并简化模板解析类的写法,去掉架构方法定义
修改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(,,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问题
完善Cookie类
修正模板检查的时候组件化的支持
模型类的查询操作支持连贯方法
去掉了一些废弃的惯例配置参数,包括:DATA_CACHE_ON 和 DATA_CACHE_MAX
惯例配置增加了DATA_CACHE_SUBDIR参数
控制文件缓存方式是否自动使用子目录哈希缓存
完善对跨库查询的支持
目录自动创建支持写入安全文件
[ 1.0.2 ] 2008-2-21
Model类增加toArray方法
修正因Log类的改动导致Trace错误信息无法正常显示的问题
数据查询返回的
数据集由ArrayObject对象改成数组
修正Model类的create方法在定义字段映射的下面的
bugModel类的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方法判断
优化数据库驱动类的查询结果获取
完善了Db类的条件查询字段中带有空格的处理
Model类增加了delConnect方法用于删除动态增加的数据库连接
增强了
分布式数据库的支持 可以设置是否需要读写分离
Model类增加智能切换功能 switchConnect方法可以
自动识别是否是相同的数据库连接类型
增加了组件模块的URL分割定义配置 COMPONENT_DEPR 包括对操作链的设置采用相同的参数定义
修正Model类的count等
统计方法会自动缓存的问题 DB类默认关闭查询缓存
修正组件模块方式下面的模板文件../Public的替换
修正Html标签库的
list标签的actionlist属性的支持
修正PDO类在某些数据库下面的getAll方法的BUG
增加核心缓存文件的开关功能 在入口文件里面设置 CACHE_RUNTIME 为 false
修正了使用组件模块的时候模板文件中__URL__的解析问题
修正模板和语言的切换cookie
Model类增加addConnect和switchConnect方法 用于支持多数据库的连接
修正了语言包的缓存导致切换语言无效的问题
Db类增加多数据库连接的内置支持
修正Model类在某些数据库下面where
条件表达式不支持where 1 的情况
Db类增加getLastSql方法用于获取最后一次查询的
sql语句修正model的数据库连接配置读取
完善compare标签
改进Vendor函数的baseUrl参数定义
改进项目语言包的定义 不同语言分成不同子目录
简化了query方法的数据库缓存
增加clearCache方法,用于清空项目相关缓存目录
修正 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方法
修正了Model的findAll的关联查询问题
修正了Model类的getModelName方法问题
修正了RBAC的模块大小写设置
去掉volist resultset标签,均作为iterate标签的别名
增加了项目编译机制和核心类库编译机制
标签库定义增加标签的别名定义
XML模版结束标签增加对空格的支持
增加compare标签和eq neq gt egt lt elt heq 和nheq标签别名
增加了多模版和多语言的开关
RBAC认证增加了操作的认证设置,之前只支持模块的认证设置
开源项目
所获荣誉