1. 程式人生 > 程式設計 >Thinkphp 框架擴充套件之應用模式實現方法分析

Thinkphp 框架擴充套件之應用模式實現方法分析

本文例項講述了Thinkphp 框架擴充套件之應用模式實現方法。分享給大家供大家參考,具體如下:

應用模式

應用模式是你的生活環境 開發環境 執行環境 ,就好比一個框架的應用場景(模式),是指這個框架在哪個平臺上執行,

thinkphp中SAE、普通、API三種模式,

  • 普通是指用於普通WEB開發和執行方式,
  • API是指用作API請求服務端,大多為別的客戶端進行服務,供遠端呼叫
  • SAE是指在新浪的SAE平臺上用的

不同的模式下配置都是不一樣的

應用模式提供了對核心框架進行改造的機會,可以讓你的應用適應更多的環境和不同的要求。

每個應用模式有自己的模式定義檔案,用於配置當前模式需要載入的核心檔案和配置檔案,以及別名定義、行為擴充套件定義等等。根據模式定義檔案的定義位置和入口是否需要定義模式,可以分為顯式應用模式和隱含應用模式。

顯式應用模式

顯式應用模式的模式定義檔案位於ThinkPHP\Mode目錄,如果我們要增加一個應用模式,只需要在該目錄下面定義一個模式定義檔案即可,下面是一個典型的模式定義檔案(lite.php):

return array(
  // 配置檔案
  '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.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');

更多關於thinkPHP相關內容感興趣的讀者可檢視本站專題:《ThinkPHP入門教程》、《thinkPHP模板操作技巧總結》、《ThinkPHP常用方法總結》、《codeigniter入門教程》、《CI(CodeIgniter)框架進階教程》、《Zend FrameWork框架入門教程》及《PHP模板技術總結》。

希望本文所述對大家基於ThinkPHP框架的PHP程式設計有所幫助。