php运行方式比较好,thinkphp 运行机制和优缺点

thinkphp首先设置一些常量、然后运行Think对象(系统环境),装载think的运行环境,包括:自动加载、异常处理、功能核心等。环境准备好后,运行App对象(应用程序),App对象会调用调度者(dispatcher)解析用户请求,然后通过反射机制实现控制器的访问(控制器的前置操作和后置操作),控制器中,通过自动加载机制访问model和其他层的功能,通过display调用View(视图类),渲染视图。具体情况如下图:

0818b9ca8b590ca3270a3433284dd417.png

应用模式和状态:

应用模式可以支持不同运行环境的切换。我们只需要配置不同环境独立的配置文件,然后设置相应的常量便可。

应用模式设置常量APP_MODE:define('APP_MODE','sae');

状态配置设置常量APP_STATUS:define('APP_STATUS','office')

thinkphp配置文件的加载顺序:

ThinkPHP/Conf/convention.php

Application/Common/Conf/config.php

Application/Common/Conf/config_应用模式名称.php

ThinkPHP/Conf/debug.php

Application/Common/Conf/debug.php

Application/Common/Conf/office.php //状态配置

Application/当前模块名/Conf/config.php

Application/当前模块名/Conf/config_应用模式名称.php

Application/当前模块名/Conf/应用状态.php

(没有定义相应常量则不加载)

当然,我们也可以通过扩展配置来添加自己的配置文件

// 加载扩展配置文件

'LOAD_EXT_CONFIG' => 'user,db',

多层MVC:

模块化设计思想。也是主要运用thinkphp的原因。thinkphp是模块/控制器/操作:Movice/Index/index的理念,他可以先分大的模块,模块里面在实现独立的mvc,当然模块里面还可以实现复杂的逻辑层、数据层等复杂结构的划分,

只需要通过D函数加参数访问,如:D('UserLogic', 'Logic')访问的就是逻辑层。

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

驱动机制:

驱动思想的添加,让我们可以在框架上扩展自己的引擎实现。我们只需要在config里面配置相应的选项,就可以实现自己的引擎实现。类似于工厂模式。驱动机制的结构如图:

0818b9ca8b590ca3270a3433284dd417.png

下面是一个模板引擎扩展的示例:

0818b9ca8b590ca3270a3433284dd417.png

文件内容:0818b9ca8b590ca3270a3433284dd417.png

twig是一个模板分离引擎,我们把源文件放到vendor文件夹里面,在template/drvier下创建twig,并实现fetch功能,就制作好了新的模板驱动,此时,我们在配置文件中设置:'TMPL_ENGINE_TYPE' =>'Twig',就可以用twig模板引擎了。详见:http://blog.bmtx.cn/index.php/2014/12/21/4/

钩子机制:

类似于观察者模式。通过配置文件,把行为挂到Hook类上,然后,当代码出发钩子的标签时,运行挂在到该标签上的所有行为。如下图:

0818b9ca8b590ca3270a3433284dd417.png

这种思路的加入,可以打破程序死板流程的限制,做一些独立行为,通过此种方式调用。

CBD模式:

核心---行为-驱动的分层。就是上面说的钩子机制和驱动机制,整个框架按照这三块来分层,以便提供比较多的可扩展方式。

thinkphp的问题:

1.架构不灵活。thinkphp自己实现了全自动化运行,这样导致,你必须按照他的解析流程运行代码,在他规定的框架内实现,有很大的局限性,例如单元测试的添加,新的运行流程的实现,

2.大量使用全局常量。thinkphp中大量使用了全局常量,这导致使用它的类依托于全局变量的设置,损失了类本身的封装性,造成比较高的耦合态。

3. 细节代码质量不高。thinkphp作为一个框架,整体架构设计还是挺合理的,但具体代码写的真是水平不高。建议好好研究细化。

4. 环境强制准备太多,也影响运行速度。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值