ThinkPHPフレームワーク入口ファイル分析
4900 ワード
ThinkPHPフレームのエントリファイルを分析する前にThinkPHP 3を見ておく.2.1に添付されているアプリケーションエントリファイル.
上の例からThinkPHPのプロジェクトエントリファイルは本当に簡単であることがわかりますが、これはアプリケーション向けにすぎません.実際にはThinkPHPフレームワークが正常に動作するには大量の定数を定義する必要があります.次に、フレームワークのエントリファイルを分析し、使用するすべての構成と定数を記録し、バグが発生した場合も記録し、プロジェクト全体の分析が完了した後、一緒にまとめて共有します.
注意:既存のフレームワークとアプリケーションのディレクトリ構造を定義し、変更することで、システムのセキュリティレベルを簡単に向上させることができます.役割は大きくありませんが、物が小さいためにしないでください.
// 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','
注意:既存のフレームワークとアプリケーションのディレクトリ構造を定義し、変更することで、システムのセキュリティレベルを簡単に向上させることができます.役割は大きくありませんが、物が小さいためにしないでください.