精品推荐
thinkphp框架

thinkphp框架是一款使用广泛的中国web框架。thinkphp框架兼容而且简单的轻量级国产PHP开发框架,支持windows/Unix/Liunx等服务器环境,正式版需要PHP5.0以上版本支持,支持MySql、PgSQL、Sqlite以及PDO等多种数据库,ThinkPHP框架本身没有什么特别模块要求,具体的应用系统运行环境要求视开发所涉及的模块。

 

thinkphp框架特性介绍:

简单易用

模型(M):模型的定义由Model类来完成。Model类位于项目目录下面的LibModel目录。

THINKPHP初始页面控制器(C):应用控制器(核心控制器)和Action控制器都承担了控制器的角色,区别在于Action控制器完成业务过程,而应用控制器(App类)负责调度控制。Action控制器位于项目目录下面的LibAction目录。

视图(V):模板的实现是和框架无关的,做到了100%分离,可以独立预览和制作。模板目录位于项目目录下面的Tpl目录。

独创机制

ThinkTemplate是一个使用了XML标签库技术的编译型模板引擎,支持两种类型的模板标签,使用了动态编译和缓存技术,而且支持自定义标签库。其特点包括:

1)支持XML标签库和普通标签的混合定义;

2)编译一次,下次直接运行而无需重新编译;

3)模板文件更新后,自动更新模板缓存;

4)自动加载当前操作的模板缓存文件,无需指定模板文件名称;

5)支持编码转换和Content-Type更换;

THINKPHP目录结构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框架版本升级注意事项:

3.2以上版本对PHP的版本要求为PHP5.3+ (不包含PHP5.3dev和PHP6) 新手建议先掌握PHP5.3的命名空间概念先

从3.2.2版本升级到3.2.3版本,需要注意:

如果应用设置数据库类型参数DB_TYPE为pdo的话,需要改成实际的数据库类型例如mysql(并且不再区分mysql和mysqli),DB_DSN参数无需设置。

如果从更旧的3.1版本升级建议参考官方的升级指导先升级到3.2版本。

并且APP_USE_NAMESPACE和CONTROLLER_LEVEL参数可能会在下一版本取消,不再推荐使用。

 

thinkphp框架 v3.2 更新日志:

[ 数据库方面 ]

数据库驱动完全用PDO重写;

支持通用insertAll方法;

改进参数绑定机制;

主从分布式数据库连接改进;

对Mongo的支持更加完善;

[ 模型方面 ]

模型类的诸多增强和改进;

增加聚合模型扩展;

支持复合主键;

多表操作的支持完善;

模型的CURD操作支持仅获取SQL语句而不执行;

增加using/index/fetchSql/strict/token连贯操作方法;

模型类的setInc和setDec方法支持延迟写入;

[ 安全方面 ]

I函数增加变量修饰符和正则检测支持;

支持全局变量过滤和Action参数绑定的变量过滤;

修正可能的SQL注入漏洞;

[ 其它方面 ]

支持全局路由定义;

增加插件控制器支持;

增加对全局和模块的模板路径的灵活设置;

日志目录分模块存放;

增加memcache Session驱动;

改进session函数的数组操作;

修正一系列存在的问题;

更多
相关推荐
H5游戏在线玩
共有0位网友发表了评论 网友评论
(请文明发言!)
猜你喜欢
猜你喜欢
猜你喜欢