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';
---------------------------------@黑眼诗人
进入系统初始化文件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(); //关闭数据库连接
}
-------------------------------------------------------------------------------------------------
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中国去看看,就不用我给你贴地址了吧
说实话,我不会在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,然后创建一个文件夹就行了。过后就这样把他丢进去。
(高亮的文件夹是本人自己创建的)
基本上就是这样。
其实现在最重要就是把基础打好吧。从问题里感觉的出你对这些东西完全不明白,所以有时候会很懒惰回答类似这样的问题。希望你可以找到解决方法。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

如何在CodeIgniter中實現自訂中間件引言:在現代的Web開發中,中間件在應用程式中起著至關重要的作用。它們可以用來執行在請求到達控制器之前或之後執行一些共享的處理邏輯。 CodeIgniter作為一個流行的PHP框架,也支持中間件的使用。本文將介紹如何在CodeIgniter中實作自訂中間件,並提供一個簡單的程式碼範例。中間件概述:中間件是一種在請求

CodeIgniter中間件:加速應用程式的反應速度和頁面渲染概述:隨著網頁應用程式的複雜性和互動性不斷增長,開發人員需要使用更有效率和可擴展的解決方案來提高應用程式的效能和反應速度。 CodeIgniter(CI)是一種基於PHP的輕量級框架,提供了許多有用的功能,其中之一就是中間件。中間件是在請求到達控制器之前或之後執行的一系列任務。這篇文章將介紹如何使用

在CodeIgniter框架中使用資料庫查詢建構器(QueryBuilder)的方法引言:CodeIgniter是一個輕量級的PHP框架,它提供了許多功能強大的工具和函式庫,方便開發人員進行Web應用程式開發。其中一個令人印象深刻的功能是資料庫查詢建構器(QueryBuilder),它提供了一種簡潔而強大的方法來建立和執行資料庫查詢語句。本文將介紹如何在Co

隨著Web應用程式的不斷發展,更加快速和有效率地開發應用程式變得非常重要。並且,隨著RESTfulAPI在網路應用程式中的廣泛應用,對於開發人員來說,必須理解如何建立和實作RESTfulAPI。在本文中,我們將討論如何使用CodeIgniter框架實現MVC模式和RESTfulAPI。 MVC模式簡介MVC(Model-Vie

隨著行動互聯網的發展,即時通訊變得越來越重要,越來越普及。對許多企業而言,即時聊天更像是一種通訊服務,提供便利的溝通方式,可以快速有效地解決業務方面的問題。基於此,本文將介紹如何使用PHP框架CodeIgniter開發一個即時聊天應用程式。了解CodeIgniter框架CodeIgniter是一個輕量級的PHP框架,提供了一系列的簡單的工具和函式庫,幫助開發者快速

CodeIgniter是一個輕量級的PHP框架,採用MVC架構,支援快速開發和簡化常見任務。 CodeIgniter5是該框架的最新版本,提供了許多新的功能和改進。本文將介紹如何使用CodeIgniter5框架來建立一個簡單的Web應用程式。步驟1:安裝CodeIgniter5下載和安裝CodeIgniter5非常簡單,只需要遵循以下步驟:下載最新版本

CodeIgniter中間件:提供安全的檔案上傳和下載功能引言:在網路應用程式開發過程中,檔案上傳和下載是非常常見的功能。然而,對於安全性的考慮,處理文件上傳和下載通常需要額外的安全措施。 CodeIgniter是一個流行的PHP框架,提供了豐富的工具和函式庫來支援開發者建立安全可靠的網路應用程式。本文將介紹如何使用CodeIgniter中介軟體來實現安全的文件

一、CodeIgniter簡介CodeIgniter是一個輕量級且全面的PHP開發框架,旨在為Web開發人員提供快速且強大的工具來建立Web應用程式。它是一個開源的框架,使用MVC架構模式來實現快速開發和基礎功能,同時支援多種資料庫。二、Config庫簡介Config庫是CodeIgniter框架中的一個元件,用於對程式碼進行組態管理。 Config庫包含了很多
