ThinkPHPフレームワーク入口ファイル分析

4900 ワード

ThinkPHPフレームのエントリファイルを分析する前にThinkPHP 3を見ておく.2.1に添付されているアプリケーションエントリファイル.
//   PHP  ,          ThinkPHP3.2.1  ,PHP      5.3,    ThinkPHP3.2.1       PHP5.3        
if(version_compare(PHP_VERSION,'5.3.0',' 5.3.0 !');
//                           false
define('APP_DEBUG',True);
//       
define('APP_PATH','./Application/');
//   ThinkPHP    
require './ThinkPHP/ThinkPHP.php';

 
上の例からThinkPHPのプロジェクトエントリファイルは本当に簡単であることがわかりますが、これはアプリケーション向けにすぎません.実際にはThinkPHPフレームワークが正常に動作するには大量の定数を定義する必要があります.次に、フレームワークのエントリファイルを分析し、使用するすべての構成と定数を記録し、バグが発生した場合も記録し、プロジェクト全体の分析が完了した後、一緒にまとめて共有します.
// ThinkPHP      
//                    。
//            _beginTime 
$GLOBALS['_beginTime'] = microtime(TRUE);
//  memory_get_usage    ,       
define('MEMORY_LIMIT_ON',function_exists('memory_get_usage'));
//                _startUseMems 
if(MEMORY_LIMIT_ON) $GLOBALS['_startUseMems'] = memory_get_usage();

/*
 *     PHP5.3      ,const 5.3           ,             const   
 *define     ,const                        。
 *const            :
 *	1.          
 *	2.      $     
 *	3.    define         
 *	4.             ,            ,        
 *	5.         (   、   、  、   )
 *	6.           ,                    
 */
//     
const THINK_VERSION     =   '3.2.1';

// URL     
const URL_COMMON        =   0;  //    
const URL_PATHINFO      =   1;  //PATHINFO  
const URL_REWRITE       =   2;  //REWRITE  
const URL_COMPAT        =   3;  //     

//      
const EXT               =   '.class.php'; 

//       ,         ,                      
//THINK_PATH  THINK_PATH    ,__DIR__          
defined('THINK_PATH') 	or define('THINK_PATH',     __DIR__.'/');
//APP_PATH    ,dirname($_SERVER['SCRIPT_FILENAME']).'/')               
defined('APP_PATH') 	or define('APP_PATH',       dirname($_SERVER['SCRIPT_FILENAME']).'/');
//APP_STATUS      ,            
defined('APP_STATUS')   or define('APP_STATUS',     '');
//APP_DEBUG      
defined('APP_DEBUG') 	or define('APP_DEBUG',      false);

//            ,             sae  
//APP_MODE    ,sae   ,common    
//STORAGE_TYPE          
if(function_exists('saeAutoLoader')){//     SAE  
    defined('APP_MODE')     or define('APP_MODE',      'sae');
    defined('STORAGE_TYPE') or define('STORAGE_TYPE',  'Sae');
}else{
    defined('APP_MODE')     or define('APP_MODE',       'common'); //                 
    defined('STORAGE_TYPE') or define('STORAGE_TYPE',   'File'); //         File    
}

//RUNTIME_PATH,          ,                  
defined('RUNTIME_PATH') or define('RUNTIME_PATH',   APP_PATH.'Runtime/');   //        
//LIB_PATH           
defined('LIB_PATH')     or define('LIB_PATH',       realpath(THINK_PATH.'Library').'/'); //         
//CORE_PATH  ThinkPHP      
defined('CORE_PATH')    or define('CORE_PATH',      LIB_PATH.'Think/'); // Think    
//BEHAVIOR_PATH  ThinkPHP        
defined('BEHAVIOR_PATH')or define('BEHAVIOR_PATH',  LIB_PATH.'Behavior/'); //       
//MODE_PATH          ,    api、sae common  
defined('MODE_PATH')    or define('MODE_PATH',      THINK_PATH.'Mode/'); //         
//Vendor         
defined('VENDOR_PATH')  or define('VENDOR_PATH',    LIB_PATH.'Vendor/'); //        
//Common         
defined('COMMON_PATH')  or define('COMMON_PATH',    APP_PATH.'Common/'); //       
//CONF_PATH          
defined('CONF_PATH')    or define('CONF_PATH',      COMMON_PATH.'Conf/'); //       
//LANG_PATH        
defined('LANG_PATH')    or define('LANG_PATH',      COMMON_PATH.'Lang/'); //       
//HTML_PATH          
defined('HTML_PATH')    or define('HTML_PATH',      APP_PATH.'Html/'); //       
//LOG_PATH        
defined('LOG_PATH')     or define('LOG_PATH',       RUNTIME_PATH.'Logs/'); //       
//TEMP_PATH      
defined('TEMP_PATH')    or define('TEMP_PATH',      RUNTIME_PATH.'Temp/'); //       
//DATA_PATH          
defined('DATA_PATH')    or define('DATA_PATH',      RUNTIME_PATH.'Data/'); //       
//CACHE_PATH          
defined('CACHE_PATH')   or define('CACHE_PATH',     RUNTIME_PATH.'Cache/'); //         

//  magic_quotes_runtime        ,
//   php5.4            
if(version_compare(PHP_VERSION,'5.4.0','

注意:既存のフレームワークとアプリケーションのディレクトリ構造を定義し、変更することで、システムのセキュリティレベルを簡単に向上させることができます.役割は大きくありませんが、物が小さいためにしないでください.