程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> CodeIgniter系統流程,codeigniter流程

CodeIgniter系統流程,codeigniter流程

編輯:關於PHP編程

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';

---------------------------------@黑眼詩人 <www.chenwei.ws>---------------------------------

進入系統初始化文件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,然後創建一個文件夾就行了。過後就這樣把他丟進去。
(高亮的文件夾是本人自己創建的)

基本上就是這樣。
其實現在最重要就是把基礎打好吧。從問題裡感覺的出你對這些東西完全不明白,所以有時候會很懶惰回答類似這樣的問題。希望你可以找到解決方法。


 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved