CodeIgniter系統流程,codeigniter流程
------------------------------------------------------------------------------------------------------
進入架構入口檔案index.php =>
定義應用的當前環境(用於設定錯誤模式):define('ENVIRONMENT', 'development');
設定系統檔案目錄名:$system_path = 'system';
設定應用檔案目錄名:$application_folder = 'application'; //可自訂
定義當前檔案名稱常量:define('SELF', pathinfo(__FILE__, PATHINFO_BASEPATH));
定義PHP檔案尾碼常量:define('EXT', '.php'); //這個全域常量不推薦使用
定義系統目錄路徑常量:define('BASEPATH', str_replace('\\', '/', $system_path));
定義前端控制器檔案路徑常量:define('FCPATH', str_replace(SELF, '', __FILE__));
定義系統目錄名常量:define('SYSDIR', trim(strchr(trim(BASEPATH, '/'), '/'), '/'));
定義應用目錄路徑常量:define('APPPATH', BASEPATH.$application_folder.'/');
載入引導檔案:require_once BASEPATH.'core/CodeIgniter.php';
---------------------------------@黑眼詩人 ---------------------------------
進入系統初始設定檔案CodeIgniter.php =>
define('CI_VERSION', '2.2.0');
define('CI_CORE', FALSE);
require(BASEPATH.'core/Common.php'); //引入公用函數庫檔案,包含load_class()等函數
require(APPPATH.'config/'.ENVIRONMENT.'/constants.php'); //引入架構常量檔案,檔案和目錄模式 & 檔案流模式
set_error_handler('_exception_handler'); //定義一個自訂錯誤處理程式以便記錄PHP錯誤
if ( ! is_php('5.3'))
{
@set_magic_quotes_runtime(0); // Kill magic quotes
}
if (isset($assign_to_config['subclass_prefix']) AND $assign_to_config['subclass_prefix'] != '')
//設定子類首碼
{
get_config(array('subclass_prefix' => $assign_to_config['subclass_prefix']));
}
if (function_exists("set_time_limit") == TRUE AND @ini_get("safe_mode") == 0)
//設定一個自由的指令碼執行時間限制
{
@set_time_limit(300);
}
$BM =& load_class('Benchmark', 'core');
//執行個體化Benchmark基準類,此類使你可以標記點並計算它們之間時間差,記憶體消耗也可以顯示
$BM->mark('total_execution_time_start');
//基準標記,總執行時間開始:$this->marker['total_execution_time_start'] = microtime();
$BM->mark('loading_time:_base_classes_start');
//基準標記,載入的時間:$this->marker['loading_time:_base_classes_start'] = microtime();
$EXT =& load_class('Hooks', 'core'); //執行個體化Hooks鉤子類,提供一種不堆砌來擴充基礎系統的機制
$EXT->_call_hook('pre_system'); //調用指定鉤子pre_system
$CFG =& load_class('Config', 'core'); //執行個體化Config配置類,包含管理設定檔的方法
if (isset($assign_to_config))
{
$CFG->_assign_to_config($assign_to_config);
//調用Config.php中_assign_to_config方法,保證配置項通過變數被分配 和 重寫
}
$UNI =& load_class('Utf8', 'core'); //執行個體化Utf8類,對UTF-8環境提供支援
$URI =& load_class('URI', 'core'); //執行個體化URI類,解析URI 和 決定路由
$RTR =& load_class('Router', 'core'); //執行個體化Router路由類,解析URI 和 決定路由
$RTR->_set_routing(); //這個函數確定什麼應該是基於URI請求,以及 路由設定檔中設定的路由
if (isset($routing))
{
$RTR->_set_overrides($routing); //設定控制器覆蓋
}
$OUT =& load_class('Output', 'core'); //執行個體化Output輸出類,負責發送最終的輸出到瀏覽器
if ($EXT->_call_hook('cache_override') === FALSE)
{
if ($OUT->_display_cache($CFG, $URI) == TRUE)
{
exit; //檢測是否有快取檔案,如果有,直接退出當前指令碼
}
}
$SEC =& load_class('Security', 'core'); //執行個體化Security安全類
$IN =& load_class('Input', 'core'); //執行個體化Input輸入類,為了安全對全域輸入資料預先處理
$LANG =& load_class('Lang', 'core'); //執行個體化Lang語言類
require BASEPATH.'core/Controller.php';, //引入 基礎控制器類
function &get_instance()
{
return CI_Controller::get_instance(); //返回靜態變數$instance
}
if (file_exists(APPPATH.'core/'.$CFG->config['subclass_prefix'].'Controller.php'))
{
require APPPATH.'core/'.$CFG->config['subclass_prefix'].'Controller.php';
//引入自訂擴充 基礎控制器類
}
if ( ! file_exists(APPPATH.'controllers/'.$RTR->fetch_directory().$RTR->fetch_class().'.php'))
{
show_error('Unable to load your default controller. Please make sure the controller specified in your Routes.php file is valid.');
}
include(APPPATH.'controllers/'.$RTR->fetch_directory().$RTR->fetch_class().'.php');
//載入本地控制器
$BM->mark('loading_time:_base_classes_end');
//基準標記,載入的時間結束:$this->marker['loading_time:_base_classes_end'] = microtime();
安全檢查
$EXT->_call_hook('pre_controller'); //調用"pre_controller" hook
$BM->mark('controller_execution_time_( '.$class.' / '.$method.' )_start'); //基準標記,控制器執行時間標記點
$CI = new $class(); //執行個體化請求控制器
$EXT->_call_hook('post_controller_constructor'); //調用"post_controller_constructor" hook
調用請求的方法
$BM->mark('controller_execution_time_( '.$class.' / '.$method.' )_end'); //基準標記,控制器執行時間結束標記點
$EXT->_call_hook('post_controller'); //調用"post_controller" hook
if ($EXT->_call_hook('display_override') === FALSE)
{
$OUT->_display(); //發送最後的渲染輸出到瀏覽器
}
$EXT->_call_hook('post_system'); //調用"post_system" hook
if (class_exists('CI_DB') AND isset($CI->db))
{
$CI->db->close(); //關閉資料庫連接
}
-------------------------------------------------------------------------------------------------
codeigniter適合開發做大型的大訪問量的項目?
Zend Framework要花很多時間,不適合快速學習,
現在國內外的架構程式非常的多,比如speedphp,qeephp,cakephp,TP等等
按照樓主的要求,那麼就只有CI,個人覺得比較不錯,
關於CodeIgniter
CodeIgniter 是一套給 PHP 網站開發人員使用的應用程式開發架構和工具包。她提供一套豐富的標準庫以及簡單的介面和邏輯結構,其目的是使開發人員更快速地進行項目開發。使用 CodeIgniter 可以減少代碼的編寫量,並將你的精力投入到項目的創造性開發上。
CodeIgniter是由Ellislab公司的CEORickEllis開發的。其核心架構是為這個程式特別編寫的,而其他很多類庫、輔助函數和子系統則來自於RickEllis和PaulBurdick編寫的內容管理系統ExpressionEngine。來自RubyonRails的靈感啟發我們創造了一個PHP架構,並且將架構的概念引入到網路社區的一般意識中。
她是一個小巧但功能強大的 PHP 架構,作為一個簡單而“優雅”的工具包,她可以為 PHP 程式員建立功能完善的 Web 應用程式。如果你是一個與人共用主機並且為客戶要求的期限而煩惱的開發人員,如果你已經厭倦了那些傻大笨粗的架構,那麼 CodeIgniter 就是你所需要的,如果...
* 你想要一個小巧的架構。
* 你需要出色的效能。
* 你需要廣泛相容標準主機上的各種 PHP 版本和配置(例如 PHP4)。
* 你想要一個幾乎只需 0 配置的架構。
* 你想要一個不需使用命令列的架構。
* 你想要一個不需堅守限制性編碼規則的架構。
* 你對 PEAR 這種大規模整合類庫不感興趣。
* 你不希望被迫學習一門範本語言(雖然可以選擇你要求的模板解析器)。
* 你不喜歡複雜,熱愛簡單。
* 你需要清晰、完整的文檔。
最重要是CI的文檔簡單豐富易懂,哈哈
想學習,可以去CI中國去看看,就不用我給你貼地址了吧
codeigniter怎才可以使用
說實話,我不會在ubuntu下配置phpmyadmin, apache 等東西。
但是有個疑問,你是因為要用codeigniter而安裝ubuntu虛擬機器的嗎?
如果是這樣,其實可以直接在windows下直接運行。首先你必須要做的就是在本地安裝一個伺服器,因為php是伺服器來編譯。個人推薦xampp。安裝以後確定全部正常運行,然後localhost查看狀態。
好了現在說一說codeigniter。codeigniter 是 php 的 framework。 如果沒有學過php,必須先把php的基礎打好,再來學習這個。php有3種寫代碼的方式(可以這樣理解吧,哈哈),正則,物件導向,還有MVC。 Codeigniter 是採用 mvc 的方法。 MVC 也就是 Model, view 和 controller。 Model 主要用於調用資料庫裡的data,而Controller就可以理解為model和view的中間人。它會從model取得值然後傳給view。View就是用來顯示的地方,語言例子:html,css,javascript。
要如何用codeigniter?
在安裝xampp過後,進到安裝後的檔案夾找到htdocs,然後建立一個檔案夾就行了。過後就這樣把他丟進去。
(高亮的檔案夾是本人自己建立的)
基本上就是這樣。
其實現在最重要就是把基礎打好吧。從問題裡感覺的出你對這些東西完全不明白,所以有時候會很懶惰回答類似這樣的問題。希望你可以找到解決方案。
http://www.bkjia.com/PHPjc/850756.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/850756.htmlTechArticleCodeIgniter系統流程,codeigniter流程 ------------------------------------------------------------------------------------------------------ 進入架構入口檔案index.php...