ThinkPHP-扩展指南-定制模式扩展

来自站长百科
Zhou3158讨论 | 贡献2010年5月19日 (三) 14:31的版本
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航、​ 搜索

导航:返回上一页

模式扩展的本质其实就是组装自己的新的基于ThinkPHP的框架核心。这是新版框架底层可组装可定制的重要思想。基于ThinkPHP的意思是能够使用ThinkPHP的内置函数方法、配置方式、独特的编译缓存机制,以及一些常量定义。事实上模式扩展可以让你完全抛开系统内置的MVC方式和核心类库~这也许是新版的魅力所在。

而作为新版的框架核心可组装的概念来说,主要体现在如下几个方面:

  1. 框架的目录结构和路径可定义;
  2. 框架的核心编译文件列表可定义;
  3. 框架的MVC可定义(也就是模式扩展了~)

模式扩展完全可以通过在项目里面定义自己的核心编译文件列表的方式来取代,因为其效果是等效的。只不过一个是可以通过设置模式来运行,而另外一个则是读取项目自身的定义,而且项目自身定义的优先级大于模式设置。

模式扩展主要是定义一个模式加载文件,例如简洁模式的thin.php文件定义方式如下:

PHP代码

return array(    

    THINK_PATH.'/Lib/Think/Exception/ThinkException.class.php',// 异常处理    

    THINK_PATH.'/Lib/Think/Core/Log.class.php',// 日志处理    

    THINK_PATH.'/Mode/Thin/App.class.php', // 应用程序类    

    THINK_PATH.'/Mode/Thin/Action.class.php',// 控制器类    

    THINK_PATH.'/Mode/Thin/alias.php', // 加载别名    

);   

通过这样的定义,简洁模式加载了自己定义的App、Action和Model类库(在alias中定义了Model的别名加载),并且沿用了核心自带的异常和日志处理类库。最后一个别名定义文件是可选的~用于快速加载类库文件,这也是新版的一个功能改进。仔细看了简洁模式的App类定义和Model定义后,就大概明白了简洁模式的工作原理了,作了很多功能上的简化。项目核心列表文件位于项目的配置目录(默认是Conf),名称为core.php。其定义方式和模式扩展文件类似,区别在于核心文件的位置不同。如果我们需要为自己的项目量身定制一个底层框架核心,又不想改变项目的入口文件定义,那么还可以根据自己的要求来进行项目核心扩展。

例如,我们在项目的配置目录下面增加一个core.php文件,定义如下:

PHP代码

return array(    

    LIB_PATH.'/Mode/App.class.php', // 应用程序类    

    LIB_PATH.'/Mode/Action.class.php',// 控制器类    

    LIB_PATH.'/Mode/alias.php', // 加载别名    

);   

然后就是根据自己的实际需要,在项目的应用类库目录下面创建Mode目录,放入相应的定制后的App、Action和Model类,包括异常处理和日志类都是可以替换的。

定义完成后,需要清空核心编译缓存和项目编译缓存才能生效。