牛骨文教育服务平台(让学习变的简单)

应用模式

应用模式提供了对核心框架进行改造的机会,可以让你的应用适应更多的环境和不同的要求。

每个应用模式有自己的模式定义文件,用于配置当前模式需要加载的核心文件和配置文件,以及别名定义、行为扩展定义等等。根据模式定义文件的定义位置和入口是否需要定义模式,可以分为显式应用模式隐含应用模式

显式应用模式

显式应用模式的模式定义文件位于ThinkPHPMode目录,如果我们要增加一个应用模式,只需要在该目录下面定义一个模式定义文件即可,下面是一个典型的模式定义文件(lite.php):

return array(
    // 配置文件
    "config"    =>  array(
        THINK_PATH."Conf/convention.php",   // 系统惯例配置
        CONF_PATH."config.php",      // 应用公共配置
    ),

    // 别名定义
    "alias"     =>  array(
        "ThinkException"         => CORE_PATH . "Exception".EXT,
        "ThinkModel"             => CORE_PATH . "Model".EXT,
        "ThinkDb"                => CORE_PATH . "Db".EXT,
        "ThinkCache"             => CORE_PATH . "Cache".EXT,
        "ThinkCacheDriverFile" => CORE_PATH . "Cache/Driver/File".EXT,
        "ThinkStorage"           => 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(
            "BehaviorParseTemplate", // 模板解析 支持PHP、内置模板引擎和第三方模板引擎
        ),
        "template_filter"=> array(
            "BehaviorContentReplace", // 模板输出替换
        ),
    ),
);

我们在ThinkPHP/Mode/Lite目录下面创建functions.php函数库文件,以及App.class.phpDispatcher.class.phpController.class.phpView.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");