新起点新突破 ThinkPHP3.0正式版发布

程序员必上的开辟者服务平台 ——
DevStore

ThinkPHP从3.0版本起头引进了崭新的CBD(核心Core+行为Behavior+驱动Driver)构造格局,因为从尾部带头,框架就使用核心+行为+驱动的布局体系,宗旨保留了最重要的部分,并在首要职位设置了标签用以标志,其余职能都施用行为扩大和驱动的秘诀结合,开拓人士可以依赖本身的内需,对有些标签地方进行行为扩张或者替换,就足以平价的定制框架底层,也得以在应用层增加自身的竹签地点和增多应用行为。而标签地方贴近于AOP概念中的“切面”,行为都以围绕那些“切面”来实行编制程序。

ThinkPHP3.0正式版宣布了!
3.0版本是继1.5和2.0五个关键里程碑之后的又二个新的源点和突破,无论从效果、品质和扩张性方面都有新的突破,珍贵在于底层布局的全新调度和进一步立异,以致更多标准化的调动,全新的CBD(主题+行为+驱动)构造情势,创设DIY框架和类AOP编制程序体验,足以满意日益复杂的体系定制和产物开采需要。 同期,3.0本子开端也正式迈入对饱含SAE在内的云平台的发动机扩展帮衬。
6年多来,为了让WEB开荒变得更简便,大家一贯在大力!秉承大道至简的成本观念,ThinkPHP近来一度成长为国内抢先和最具影响力的WEB应用开采框架,其应用领域和优质案例分布于各界,在高速支付、安全、成效、负载上都有不小优势。

澳门新葡萄京官网注册 1


[ 新版重要特征 ]
1、CBD(大旨+行为+驱动)布局情势(塑造DIY框架和类AOP编制程序体验);
2、改正的连串编写翻译;
3、加强的调节和测验形式;
4、加强的路由机制;
5、内部导入和机动加载优化;
6、ORM增强;
7、模板引擎质量提高;
8、全新布局模板;
9、MongoDb支持;
10、RESTFul支持;
11、SAE引擎帮忙(提供SAE安排和当地化调试帮助);
12、底层目录布局正式和强大完全分离;
13、更增加的恢弘和驱动;

澳门新葡萄京官网注册,ThinkPHP 是一个免费开源的,急忙、简单的面向对象的
轻量级PHP开辟框架,坚守Apache2开源左券发表,是为着敏捷WEB应用开辟和简化集团应用开辟而诞生的。ThinkPHP从降生以来向来秉承简洁实用的兼顾基准,在维持美好的习性和至简的代码的同一时候,也讲究易用性。並且有着不菲的原创功能和特色,在社区团体的积极参预下,在易用性、扩充性和总体性方面再三优化和校正,众多的独立案例确定保障能够稳固用于商业以至门户级的付出。

 一、Core(核心)   

详尽的换代日志查看这里。

透过6年的持续积存和重构,3.0本子在框架底层的定制和扩大方面趋于康健,使得应用的花费范围和须求适应度更结实大,能够满意分歧水平的开采人员的供给。而且引进了全新的CBD(核心+行为+驱动)架构方式,目的在于塑造DIY框架和AOP编制程序体验,让ThinkPHP能够在差别地点都能赶快满足项目和动用的必要,况兼正式引进SAE、REST和Mongo援救。

ThinkPHP的主导部分包涵基本函数库、惯例配置、焦点类库(包蕴根底类和停放驱动及中央行为),那一个是ThinkPHP必不可缺的一些。

框架下载:[ 核心版
完整版 ]

应用ThinkPHP,你能够更方便人民群众和神速的支付和安顿应用。当然不唯有是商铺级应用,任何PHP应用开荒都足以从ThinkPHP的精短和连忙的性子中收益。ThinkPHP自个儿具备相当多的原创脾性,並且倡导大道至简,开荒由小编的开销思想,用起码的代码实现越多的坚决守护,大旨正是让WEB应用开辟更简约、更加高速。为此ThinkPHP会不断接到和融合越来越好的手艺以管教其独特和生机,提供WEB应用开采的最好实行!经过6年来的接踵而来重会谈改良,ThinkPHP到达了叁个新的等级,能够知足集团支付中复杂的连串要求,足以到达公司级和门户级的付出规范。

ThinkPHP/Common/functions.php // 核心函数库
ThinkPHP/Conf/convention.php  // 惯例配置文件
ThinkPHP/Conf/debug.php  // 惯例调试配置文件
ThinkPHP/Mode/common.php  // 普通模式定义文件
ThinkPHP/Library/Think // 核心类库包
ThinkPHP/Library/Behavior // 系统行为类库
ThinkPHP/Library/Think/App.class.php // 核心应用类
ThinkPHP/Library/Think/Behavior.class.php // 基础行为类
ThinkPHP/Library/Think/Cache.class.php // 核心缓存类
ThinkPHP/Library/Think/Controller.class.php // 基础控制器类
ThinkPHP/Library/Think/Db.class.php // 数据库操作类
ThinkPHP/Library/Think/Dispatcher.class.php // URL解析调度类
ThinkPHP/Library/Think/Exception.class.php // 系统基础异常类
ThinkPHP/Library/Think/Hook.class.php // 系统钩子类
ThinkPHP/Library/Think/Log.class.php // 系统日志记录类
ThinkPHP/Library/Think/Model.class.php // 系统基础模型类
ThinkPHP/Library/Think/Route.class.php // 系统路由类
ThinkPHP/Library/Think/Storage.class.php // 系统存储类
ThinkPHP/Library/Think/Template.class.php // 内置模板引擎类
ThinkPHP/Library/Think/Think.class.php // 系统引导类
ThinkPHP/Library/Think/View.class.php // 系统视图类

文书档案下载:[PDF版
CHM版 ]

Behavior目录上边是系统内置的部分作为类库,内置驱动则分布在相继差异的驱动目录下边(参照他事他说加以考察上面包车型客车驱动部分)。


二、Driver(驱动)  

3.2在构造划诬捏计上进一层有加无己了驱动的统筹,替代了前头的引擎和形式扩大,并且改善了作为的宏图,使得框架全部更灵敏,何况鉴于在急需写入数据的效用类库中都动用了驱动化的安插观念,所以使得新的框架能够轻易满意布满式布置的必要,对云平台的援救可以更简短的兑现了。因而,在新版的扩张里面,已经打消了外燃机扩大和方式扩大,改成配置不一致的接受形式就能够。

ThinkPHP/Library/Think/Cache/Driver // 缓存驱动类库
ThinkPHP/Library/Think/Db/Driver // 数据库驱动类库
ThinkPHP/Library/Think/Log/Driver // 日志记录驱动类库
ThinkPHP/Library/Think/Session/Driver // Session驱动类库
ThinkPHP/Library/Think/Storage/Driver // 存储驱动类库
ThinkPHP/Library/Think/Template/Driver // 第三方模板引擎驱动类库
ThinkPHP/Library/Think/Template/TagLib // 内置模板引擎标签库扩展类库

三、Behavior(行为)  

行事(Behavior)是ThinkPHP扩大机制中相比关键的一项扩充,行为不仅能够独自调用,也得以绑定到有个别标签(位)中开展侦听。这里的行事指的是一个相比抽象的概念,你能够想象成在选取实施进度中的一个动作恐怕管理,在框架的实行流程中,各种岗位都能够有行为发出,举个例子路由质量评定是多个人展览馆现,静态缓存是一个人展览馆现,顾客权限检查评定也是表现,大到事情逻辑,小到浏览器检验、多语言检测等等都得以作为是一个行事,以至说你愿意给您的网址客商的首回访问弹出Hello,world!那么些都能够看作是一种表现,行为的留存让您不要求改动框架和动用,而在外围通过扩充也许配置来退换依旧扩充一些功力。

而各异的一言一动之间也可以有着地方协同性别,举例,有些行为的作用地点都是在应用试行前,有个别行为都是在模板输出之后,大家把那几个行为时有产生功效的职责称之为标签(位),也足以称作钩子,当应用程序运维到那个标签的时候,就能被拦截下来,统一实践有关的一言一动,近似于AOP编制程序中的“切面”的定义,给某多个标签绑定相关行为就成了一种类AOP编制程序的酌量。

系统标签位

系统大旨提供的标签地点包含(依据施行顺序排列):

  • app_init 应用起来化标签位
  • module_check 模块检查实验标签位(3.2.1本子新扩充
  • path_info PATH_INFO检查评定标签位
  • app_begin 应用起来标签位
  • action_name 操作方法名标签位
  • action_begin 调节器起首标签位
  • view_begin 视图输出以前标签位
  • view_template 视图模板剖判标签位
  • view_parse 视图解析标签位
  • template_filter 模板拆解深入分析过滤标签位
  • view_filter 视图输出过滤标签位
  • view_end 视图输出甘休标签位
  • action_end 调节器甘休标签位
  • app_end 应用截至标签位

在种种标签地点,能够配备几个表现,行为的实施种种依照定义的各种依次实行。除非前方的作为里面中断实行了(某个行为大概要求暂停实行,例如检查测量检验机器人恐怕地下实施行为),不然会三翻五次下三个作为的实践。

除了那些之外那一个系统内置标签之外,开拓人士还足以在选用中加多本身的使用标签,在别的部要求要拦截的职位增加如下代码就能够:

tag('my_tag'); // 添加my_tag 标签侦听
// 下面的写法作用一致
ThinkHook::listen('my_tag');

tag函数用于安装有些标签位,可以流传并且只接收叁个参数,即便必要传入三个参数,请使用数组,

tag('my_tag',$params); // 添加my_tag 标签侦听

该参数为援引传值,所以不能不传入变量,因而上面包车型客车传值是颠倒阴阳的:

tag('my_tag','param'); // 添加my_tag 标签侦听
宗旨行为

系统的好些个主干功能也是运用行为增添组装的,对于知足项目稳步纷纷复杂的须要和定制底层框架提供了越来越多的便利和也许。

主干行为放在 ThinkPHP/Behavior/ 目录上边,框架焦点内置的一言一动总结如下:

行为名称 说明 对应标签位置
BuildLite 生成Lite文件(3.2.1版本新增) app_init
ParseTemplate 模板文件解析,并支持第三方模板引擎驱动 view_parse
ShowPageTrace 页面Trace功能行为,完成页面Trace功能 view_end
ShowRuntime 运行时间显示行为,完成运行时间显示 view_filter
TokenBuild 令牌生成行为,完成表单令牌的自动生成 view_filter
ReadHtmlCache 读取静态缓存行为 app_init
WriteHtmlCache 生成静态缓存行为 view_filter
行事定义

自定义的扩大行为能够投身宗旨还是采取目录,只要遵守命名空间的定义法则就能够。
行为类的命名接受:行为名称(驼峰法,首字母大写)+Behavior
行为类的定义方式如下:

namespace HomeBehavior;
use ThinkBehavior;
class TestBehavior extends Behavior {
     // 行为扩展的执行入口必须是run
     public function run(&$params){
         if(C('TEST_PARAM')) {
             echo 'RUNTEST BEHAVIOR '.$params;
         }
     }
}

3.2.1版本始于,行为类的概念无需后续ThinkBehavior类,所以,上边包车型大巴定义能够简化为:

namespace HomeBehavior;
class TestBehavior {
     // 行为扩展的执行入口必须是run
     public function run(&$params){
         if(C('TEST_PARAM')) {
             echo 'RUNTEST BEHAVIOR '.$params;
         }
     }
}

行事类必得定义履行入口方法run,由于作为的调用机制影响,run方法无需其余再次回到值,全数重临都经过引用重回。run方法的参数只同意三个,但足以流传数组。

行为绑定

行事定义达成后,就必要绑定到有个别标签地方技能卓有成效,不然是不会进行的。

笔者们要求在选用的表现定义文件tags.php文本中展开发银行为和标签的岗位定义,格式如下:

return array(
     '标签名称1'=>array('行为名1','行为名2',...), 
     '标签名称2'=>array('行为名1','行为名2',...), 
 );

标签名称包括大家如今列出的系统标签和接收中温馨定义的竹具名称,例如你需求在app_init标签地方定义叁个CheckLangBehavior行为类的话,还行:

return array(
  'app_init'=>array('HomeBehaviorCheckLang'),
    // **如果是3.2.1版本 需要改成(后面不再重复说明)**
    // 'app_init'=>array('HomeBehaviorCheckLangBehavior'),
);

能够给一个标签位定义几人展览馆现,行为的施行各种就是概念的前后相继顺序,举个例子:

return array(
  'app_init'=>array(
    'HomeBehaviorCheckLang',
    'HomeBehaviorCronRun'
   ),
);

暗中认可景况下tags.php中定义的行为会面併系统作为一同推行,相当于说要是系统的作为定义中app_init标签中早已定义了任何行为,则会首先执行系统作为增加中定义的作为,然后再实施项目作为中定义的行事。比方:
系统作为定义文件中定义了:

'app_begin'  =>  array(
    'BehaviorReadHtmlCache', // 读取静态缓存
),

而使用行为定义文件有定义:

'app_begin'  =>  array(
    'HomeBehaviorCheckModule',
    'HomeBehaviorCheckLang',
),

则最后推行到app_begin标签(位)的时候,会挨个履行:

LibraryBehaviorReadHtmlCache
HomeBehaviorCheckModule
HomeBehaviorCheckLang

八个人展览现(除非中级某些行为有中止实行的操作)。

即便期待接纳的一言一动配置文件中的定义覆盖种类的行为定义,能够改为为如下情势:

'app_begin'  =>  array(
    'HomeBehaviorCheckModule',
    'HomeBehaviorCheckLang',
    '_overlay'    =>    true,
),

则最后实践到app_begin标签(位)的时候,会相继实施上边两人展览馆现:

HomeBehaviorCheckModule
HomeBehaviorCheckLang

利用行为的定义尚无范围,你能够把二个人展览现绑定到多少个标签地点施行,比如:

return array(
     'app_begin'=>array('HomeBehaviorTest'), // 在app_begin 标签位添加Test行为
     'app_end'=>array('HomeBehaviorTest'), // 在app_end 标签位添加Test行为
 );
独立实行

作为的调用不肯定要松手标签技术调用,假使要求的话,我们得以在调节器中依然此外地点平素调用行为。举个例子,我们能够把客户权限检验封装成三个行为类,比如:

namespace HomeBehavior;
use ThinkBehavior;
class AuthCheckBehavior extends Behavior {
     // 行为扩展的执行入口必须是run
     public function run(&$return){
         if(C('USER_AUTH_ON')) {
             // 进行权限认证逻辑 如果认证通过 $return = true;
             // 否则用halt输出错误信息
         }
     }
}

概念了AuthCheck行为后,大家得以在调整器的_initialize方法中平素用上边包车型地铁方法调用:

B('HomeBehaviorAuthCheck');