Thinkphp 框架扩展之应用模式实现方法分析
本文实例讲述了Thinkphp框架扩展之应用模式实现方法。分享给大家供大家参考,具体如下:
应用模式
应用模式是你的生活环境开发环境执行环境,就好比一个框架的应用场景(模式),是指这个框架在哪个平台上运行,
thinkphp中SAE、普通、API三种模式,
- 普通是指用于普通WEB开发和运行方式,
- API是指用作API请求服务端,大多为别的客户端进行服务,供远程调用
- SAE是指在新浪的SAE平台上用的
不同的模式下配置都是不一样的
应用模式提供了对核心框架进行改造的机会,可以让你的应用适应更多的环境和不同的要求。
每个应用模式有自己的模式定义文件,用于配置当前模式需要加载的核心文件和配置文件,以及别名定义、行为扩展定义等等。根据模式定义文件的定义位置和入口是否需要定义模式,可以分为显式应用模式和隐含应用模式。
显式应用模式
显式应用模式的模式定义文件位于ThinkPHP\Mode目录,如果我们要增加一个应用模式,只需要在该目录下面定义一个模式定义文件即可,下面是一个典型的模式定义文件(lite.php):
returnarray( //配置文件 'config'=>array( THINK_PATH.'Conf/convention.php',//系统惯例配置 CONF_PATH.'config.php',//应用公共配置 ), //别名定义 'alias'=>array( 'Think\Exception'=>CORE_PATH.'Exception'.EXT, 'Think\Model'=>CORE_PATH.'Model'.EXT, 'Think\Db'=>CORE_PATH.'Db'.EXT, 'Think\Cache'=>CORE_PATH.'Cache'.EXT, 'Think\Cache\Driver\File'=>CORE_PATH.'Cache/Driver/File'.EXT, 'Think\Storage'=>CORE_PATH.'Storage'.EXT, ), //函数和类文件 'core'=>array( MODE_PATH.'Lite/functions.php', COMMON_PATH.'Common/function.php', MODE_PATH.'Lite/App'.EXT, MODE_PATH.'Lite/Dispatcher'.EXT, MODE_PATH.'Lite/Controller'.EXT, MODE_PATH.'Lite/View'.EXT, CORE_PATH.'Behavior'.EXT, ), //行为扩展定义 'tags'=>array( 'view_parse'=>array( 'Behavior\ParseTemplate',//模板解析支持PHP、内置模板引擎和第三方模板引擎 ), 'template_filter'=>array( 'Behavior\ContentReplace',//模板输出替换 ), ), );
我们在ThinkPHP/Mode/Lite目录下面创建functions.php函数库文件,以及App.class.php、Dispatcher.class.php、Controller.class.php和View.class.php,这些类都是针对我们新的应用模式定制的核心类,但是和标准模式的命名空间是一致的,也就是说都在Think命名空间下面。
ThinkPHP/Mode/Lite目录用于存放该应用模式下面的所有自定义文件。
应用模式定义文件定义好后,我们就可以在应用中使用该模式了,例如:
define('MODE_NAME','lite'); define('APP_PATH','./Application/'); require'./ThinkPHP/ThinkPHP.php';
隐含应用模式
隐含应用模式的模式定义文件位于应用的配置目录下面Application/Common/Conf/core.php,模式定义文件和显式应用模式的定义文件一样。使用隐含应用模式的时候,不需要在入口文件中定义MODE_NAME,或者说存在隐含应用模式定义文件的时候,MODE_NAME定义无效。
注意:如果应用中定义的应用模式需要使用其他的存储类型,需要在入口文件中定义。
define('STORAGE_TYPE','Bae');
更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《ZendFrameWork框架入门教程》及《PHP模板技术总结》。
希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。