分享

THINKPHP

 邵飞翔 2016-04-11

折叠 编辑本段 基本特性

1.简单易用的MVC模式THINKPHPTHINKPHP

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

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

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

2.独创的核心编译和项目编译机制

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

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

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

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

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

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

6)模板变量输出前缀支持,避免变量名称冲突;

7)模板常量替换,无需设置模板变量;

8)支持变量组合调节器和格式化功能;

9)支持替换其它模板引擎插件使用;

10)支持获取模板页面内容

3.内置XML模板引擎,支持标签库

4.富模型支持

1)聚合模型:

聚合模型是一种虚拟模型,用于把数据表的字段抽象话,更加容易理解和操作。

我们可以把数据表中的某些属性进行数据封装,这样就把枯燥的数据表字段赋予更好的可读性。

2)静态模型:

静态模型可以让模型的数据静态化,而不需要频繁和数据库打交道,可以用于不经常不变的数据表。而且ThinkPHP在ORM层上面模拟实现了数据库的视图功能,这是ThinkPHP独创的一项技术,使得多表的关联查询具有更高的效率和可操作性,而无需定义复杂的关联关系,让关联关系更加浅显易懂。

有些时候,数据表的数据一旦添加后就不再容易变化,我们更希望把这样的模型数据静态化,而不需要再次访问数据库。ThinkPHP支持静态模型的概念,一旦把模型设置为静态,那么会在第一次初始化的时候获取数据表的全部数据,并生成缓存,以后不会再连接数据库。而只需要直接访问模型的dataList数据即可。

3)视图模型

ThinkPHP在ORM模型里面模拟实现了数据库的视图模型,该功能可以用于多表查询。

要定义视图对象,需要设置viewModel为true,然后设置viewFields属性即可。

5.CURD和操作高度自动化支持

ThinkPHP提供了灵活和方便的数据操作方法,不仅实现了对数据库操作的四大基本操作(CURD):创建、读取、更新和删除的实现,还内置了很多实用的数据操作方法,提供了ActiveRecords模式的最佳体验。

6.丰富的查询语言支持

ThinkPHP大多数情况使用的都是对象查询,因为充分利用了ORM查询语言,了解查询条件的定义对使用对象查询非常有帮助,对于复杂的查询,或者从安全方面考虑,可以使用HashMap对象或者索引数组来传递查询条件。

7.目录结构自动创建THINKPHPTHINKPHP

ThinkPHP具有项目目录自动创建功能,你只需要定义好项目的入口文件,第一次执行入口文件的时候,系统会自动创建项目的相关目录结构,如果是linux环境下面需要给项目入口文件里面指定的路径设置可写权限。

8.分布式数据库支持

ThinkPHP的模型支持主从式数据库的连接,配置DB_DEPLOY_TYPE 为1 可以采用分布式数据库支持。

9.多数据库连接和切换支持

如果需要在特殊的时候连接多个数据库,那么可以尝试使用ThinkPHP的多数据库连接特性:包括相同类型的数据库和不同类型的数据库。(注意:所谓的相同类型数据库的定义是指和项目配置文件或者模型的数据库连接的数据库类型相同。)

10.ActiveRecords模式和丰富的ROR特性

ThinkPHP实现了ActiveRecords模式的ORM模型,采用了非标准的ORM模型:表映射到类,记录(集)映射到对象,字段属性映射到对象的虚拟属性。最大的特点就是使用方便,从而达到敏捷开发的目的。

11.灵活简单的项目配置

ThinkPHP提供了灵活的配置功能,采用最有效率的PHP返回数组方式定义,支持惯例配置、项目配置、调试配置和模块配置,并且会自动生成配置缓存文件,无需重复解析的开销。对于有些简单的应用,你无需配置任何配置文件,而对于复杂的要求,你还可以增加模块配置文件,另外ThinkPHP的动态配置使得你在开发过程中可以灵活的调整配置参数。

ThinkPHP在项目配置上面创造了自己独有的分层配置模式,其配置层次体现在:惯例配置--> 项目配置--> 模块配置--> 操作(动态)配置,优先顺序从右到左(在没有生效的前提下)。

12.模型自动验证和处理

THINKPHPTHINKPHP

系统内置了数据对象的自动验证功能,而大多数情况下面,数据对象是由表单提交的$_POST数据创建。需要使用系统的自动验证功能,只需要在Model类里面定义$_validate属性,是由多个验证因子组成的数组,支持的验证因子格式:验证字段,验证规则,错误提示,验证条件,附加规则,验证时间。

13.静态页面生成和多元化缓存机制

ThinkPHP内置了静态缓存的功能,并且支持静态缓存的规则定义。要使用静态缓存功能,需要开启HTML_CACHE_ON 参数,并且在项目配置目录下面增加静态缓存规则文件 htmls.php。

14.丰富的数据库及PDO支持

15.SEO和URL路由支持

16.AJAX支持

17.易扩展的系统基类库

系统基类库

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内建的类库和文件导入方法,提供了方便和灵活的类似于命名空间的文件导入机制。

18.自动编码转换

ThinkPHP框架的文件全部采用UTF-8编码格式,UTF-8的支持和自动输出编码转换的功能让页面表现更加灵活。您可以配置输出的页面编码格式,如gb2312等(默认采用UTF-8输出)。系统根据配置文件中设置的编码格式自动对页面进行编码转换,支持iconv和mb_string两种方式,为了提高效率,如果系统的模板编码设置和输出编码设置项相同,则不会进行编码转换。ThinkPHP可以设置模板编码、输出编码和数据库编码,并自动完成转换工作,让你的应用不再受编码的苦恼。

19.组件和插件支持

20.基于角色的权限控制体系

企业级的应用是离不开安全保护的,ThinkPHP以基于Spring的Acegi安全系统作为参考原型,并做了简化,以适合目前的ThinkPHP结构,提供了一个多层的、可定制的安全体系来为应用开发提供安全控制。安全体系中主要有: 安全拦截器、认证管理器、决策访问管理器 、运行身份管理器。

21.详尽的开发指南和全中文注释

折叠 编辑本段 更新记录

折叠 编辑本段 [5.0RC1版本]2015-12-11

[ 底层架构 ]

真正的惰性加载

核心类库组件化

完美路由设计

框架引导文件

采用Traits扩展

API友好

文件命名规范调整

Composer自动加载支持

Console模式

 [ 路由 ]

动态注册路由规则

支持路由到任意类的方法

域名绑定

资源路由支持

自定义路由检测方法

路由前后置行为

路由分组

变量规则(包括全局和局部)

闭包支持

URL生成支持路由解析反转

支持路由到多层控制器

 [ 调试和异常 ]

专为API开发而设计的输出、调试和异常处理

SocketLog整合实现远程浏览器插件调试

内置trace方法直接远程调试

数据库SQL性能分析支持

 [ 控制器 ]

控制器类无需继承controller类

灵活的多层控制器支持

可以Traits引入高级控制器功能

控制器rest/yar/rpc/hprose/jsonrpc扩展

前置操作方法支持排除和指定操作

控制器操作方法统一return设计

 [ 模型 ]

简化的核心模型

Traits引入高级模型/视图模型/关联模型

主从分布时候主数据库读操作支持

改进的join方法和order方法

 [ 视图 ]

视图解析驱动设计(模板引擎)

所有方法不再直接输出而是返回交由系统统一输出处理

动态切换模板主题

动态切换模板引擎

 [ 数据库 ]

完全基于PDO实现

简化的数据库驱动设计

SQL性能监控(需要开启数据库调试模式)

 [ 其他方面 ]

目录和MVC文件自动生成支持

I函数默认添加变量修饰符为/s

一个行为类里面支持为多个标签位定义不同的方法

[3.2.3 版本] 2014-12-24[1]

 [ 数据库方面 ]

 数据库驱动完全用PDO重写;
        
支持通用insertAll方法;
       
 改进参数绑定机制;
        
主从分布式数据库连接改进;
       
 对Mongo的支持更加完善;

 [ 模型方面 ]

模型类的诸多增强和改进;
       
增加聚合模型扩展;
       
支持复合主键;
      
 多表操作的支持完善;
       
模型的CURD操作支持仅获取SQL语句而不执行;
       
增加using/index/fetchSql/strict/token连贯操作方法;
       
模型类的setInc和setDec方法支持延迟写入;

[ 安全方面 ]

I函数增加变量修饰符和正则检测支持;
     
  支持全局变量过滤和Action参数绑定的变量过滤;
       
修正可能的SQL注入漏洞;

[ 其它方面 ]

支持全局路由定义;
       
增加插件控制器支持;
     
 增加对全局和模块的模板路径的灵活设置;
       
日志目录分模块存放;
     
 增加memcache Session驱动;
     
 改进session函数的数组操作;
       
修正一系列存在的问题;

[新增]

[新增] 增加index连贯操作方法,用于数据集的强制索引操作

[新增] Model类增加using连贯操作用于多表操作

[新增] 增加strict连贯操作,用于设置数据写入和查询是否严格检查是否存在字段 默认情况下 不合法数据字段自动删除,如果设置了严格检查则会抛出异常。 例如: $model->strict(true)->add($data);

[新增] 增加fetchSql连贯操作

[新增] 添加yaml_parse_file()函数,解析yaml文件返回一个数组

[新增] 增加memcache Session驱动

[新增] 增加聚合模型,方便一对一的关联数据表操作

[新增] 新增TMPL_PATH常量支持 可以全局改版模板目录到模块目录之外

[新增] 增加Lite模式Db类,仅支持原生SQL操作

[新增] 数据库调试增加单独的配置参数 DB_DEBUG(如未设置依然取调试模式常量 APP_DEBUG)

[新增] 新增框架核心葡萄牙语言包

[新增] 增加COOKIE_SECURE和COOKIE_HTTPONLY配置参数

[新增] MySQL驱动增加ON DUPLICATE KEY UPDATE功能

[改进]

[改进] Db类和数据库驱动类完全基于PDO重写

[改进] 添加全局过滤机制(默认关闭)

[改进] I函数增加修饰符功能和正则检测支持

[改进] 采用主从分布式数据库时,从数据库连接失败自动连接主服务器

[改进] 增加Model类对复合主键的支持

[改进] 改进Mongo模型和驱动类,使用更加方便

[改进] 改进session函数删除操作支持数组

[改进] 改进session函数对多维赋值的支持

[改进] 改进数据库字段缓存的文件标识 加上数据表前缀,避免不同前缀的表产生混淆

[改进] 针对数据库视图无主键的问题,使用默认id作为主键,与未开启DB_FIELDS_CACHE时行为一致

[改进] SAE模式惯例配置增加上传驱动设置

[改进] 改进参数绑定机制

[改进] 确保使用参数绑定后日志中生成sql语句的准确性

[改进] 模型类的setInc和setDec方法支持延迟写入,同时取消高级模型的相关方法

[改进] 日志写入的时候自动创建目录

[改进] 改进SQL缓存

[改进] 优化缓存队列功能

[改进] 路由的请求类型定义不区分大小写

[改进] 数据库驱动增加通用insertAll方法支持

[改进] 完善 url的验证正则

[改进] 单字母函数返回值类型修正以及一些拼写错误修正

[改进] 自动创建模型模块的父目录 直接调用\Think\Build::buildController和buildModel的情况下创建目录

[改进] 日志驱动增加自动目录创建支持

[改进] 自动生成的目录结构增加模块的缓存目录

[改进] mysql存储过程支持完善

[改进] Db类改进对多表更新和删除的支持,多表删除支持USING和JOIN操作

[改进] 改进parseLock的位置

[改进] Db类的update和delete方法增加多表操作的支持

[改进] 改进CURD操作 可以直接返回sql语句而不真正执行。 

[改进] 插件控制器的命名空间可定义 不再局限于模块下面 增加 ADDON_PATH 用于定义插件目录 默认位于 应用目录下面的Addon

[改进] 改进静态缓存读取的有效判断对sae的支持

[改进] 日志目录分模块

[改进] 模型类的getField方法改进 支持在字段名中使用函数

[改进] 改进Db类的parseWhere方法

[改进] 改进模型的page和limit方法 改进分页类

[改进] 改进配置文件自动生成

[改进] 完善ShowPageTraceBehavior一处函数调用大小写规范

[改进] U函数支持多级控制器

[改进] send_http_status函数增加状态

[改进] 允许在项目中定义 __APP__ 常量

[改进] 改进定义TMPL_PATH后的模板路径定义

[改进] Image类的imagick驱动save方法增加quality参数 用于图片质量设置,默认值为80

[改进] 改进Image类的JPEG图片生成质量

[改进] Gd库驱动类改进

[改进] 改进T函数对TMPL_PATH常量定义的支持

[改进] 改进I函数对path.0的支持

[改进] 改进关联模型

[改进] 改进dispatch_jump模板

[改进] 更新api模式支持配置文件的后缀定义

[改进] 改进Model类的getModelName方法对多层模型的支持

[改进] 改进cookie函数对secure和httponly的支持

[改进] 改进模板标签对命名空间的支持,写法 {$var|Org\\Util\\String::rand}

[改进] 改进数据表自动识别规则正则规则 可以正确识别带有数字的数据表

[改进] Model类的cache方法使用改进 cache(10) 等同于 cache(true, 10)

[修正]

[修正] 修正ShowRuntime行为扩展

[修正] 修正Model类的add和addall方法中的_facade和_parseOptions的调用顺序问题

[修正] 修正使用数组方式动态指定表名后的BUG

[修正] 修正ChromShowPage行为扩展

[修正] 修正自定义公共模块路径时,加载公共模块类库失败

[修正] 修正参数绑定的一处判断

[修正] 解决PDO参数绑定后的获取最终SQL语句问题

[修正] 修正开启布局后show方法的问题

[修正] 解决调用trace()无法返回trace日志问题

[修正] 修复mongo出现错误输出的问题

[修正] 修正页面Trace的日志保存

[修正] 修正Model类的save方法

[修正] 修正令牌验证没有设置TOKEN_NAME的问题

[修正] 修复RestController中请求资源类型总是为html的bug

[修正] 修正Model类的getField方法的一处变量冲突问题

[修正] 修正Mongo驱动的page处理

[修正] 修正 extract方法 在分解变量的时候 可能导致变量被覆盖的问题

[修正] 修正Imagick类库

[修正] 修正页面trace插件开启PAGE_TRACE_SAVE后出错的问题

[修正] 修正controller方法 对不使用命名空间的支持

[修正] 修正Image类的save方法支持图片质量

[修正] 修正高级模型的乐观锁功能

[修正] 修正I函数通过FILTER_VALIDATE_EMAIL方式传入常量过滤的一处错误 并且过滤参数支持数组

[修正] 修正GIF类的架构函数

[修正] Cache类一处常量错误修正

[修正] 修改自动生成的配置文件支持CONF_EXT定义

[删除]

去掉多余的URL_404_REDIRECT配置参数

[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认证增加了操作的认证设置,之前只支持模块的认证设置

折叠 编辑本段 新手学习

一个好的框架还要配合好的学习路线,就如同去旅游一样要选择好的旅游线路。虽然学习这个东西没有定式,完全看个人情况,但是我还是尽可能可以总结出一些推荐的学习路线,希望可以适用大多数的TP初学者。如果你还不会PHP,推荐先进行PHP基础编程学习。

路线一(针对会使用PHP开发的新手)

1、查看TP的功能特性和典型应用(知道Tp的优势和用途 官方首页 案例中心 )

2、查看在线示例中心的例子(大概有个感性认识 示例中心 )

3、查看官方提供的快速入门文档(从基本开始)

4、下载完整包运行调试自带的示例中心研究(了解代码 最新下载 )

5、去官方论坛提问(针对示例不解或者有问题的地方)

6、自己尝试做一些简单例子(巩固和消化)

7、阅读官方首页提供的其他文档(心中开朗)

8、改进自己的例子(看完指南后体验新功能)

9、有把握开始做项目(真正实践)

10、遇到问题查阅官方API手册或者论坛提问

11、到官方论坛汇报BUG和建议

12、到论坛分享你的经验

13、有时间了多看看TP的源码

14、给TP贡献代码和类库(学习的成果)

几个学习守则

欲速则不达,踏实进取

戒骄戒躁、把握心态

文档很难全面官方论坛是你学习交流的最好地方

实践出真知

折叠 编辑本段 版本发布日期

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完整版 ;

2014年12月24日,ThinkPHP发布3.2.3完整版;

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多