这篇介绍下CI框架的异常和错误处理机制. 在入口文件index.php中,根据设置的环境参数设置error_reporting的范围,和是否显示错误. 在CI初始化程序CodeIgniter.php中,设置自定义的错误处理方法,自定义的异常处理方法,自定义的php中止处理方法. set_error_handler('_error_handler'); set_exception_handler('_exception_handler'); register_shutdown_function('…
CodeIgniter.php是CI框架的核心文件.它在前端控制器index.php之后运行,加载各类基础组件,执行请求.文件执行完成后,这次请求也就结束了.所以,该文只能对CodeIgniter.php做一个大致的讲解,中间如果遇到重要部分,会新写一篇日志单独详细讲解. CI框架的注释非常的详细和规范.官方对这个文件的解释就是 System Initialization File(系统初始化文件),加载基础类库和执行请求.它不同于index.php只是设置环境和定义重要路径,而是要深入框架的核…
文件位于system/core/common.php,是框架核心文件. 该文件中定义了一系列的函数,都是框架运行中经常需要用到的.下面逐一介绍. is_php /** * Determines if the current version of PHP is equal to or greater than the supplied value * * @param string * @return bool TRUE if the current version is $version or…
这篇文章学习CI框架的钩子特性. hooks是CI框架提供的一种机制,允许你在程序框架运行流程的某个阶段执行你自己的一些代码.比如系统运行前,CI_Controller调用前,系统运行结束后等特定的时间节点,执行自定义的函数.如同官方所言,CodeIgniter 的钩子特性提供了一种方法来修改框架的内部运作流程,而无需修改 核心文件. hooks的逻辑主要写在system/core/Hooks.php的CI_Hooks类中.框架在Codeigniter.php中载入该类. /* * ------…
php的框架众多,笔者用过的包括thinkphp,CI,smarty,laravel,也用过一些公司自己开发的框架. thinkphp是国人自己开发的,我大概用过一段时间,基本功能都还好,应该也还比较好用,我没有做深入的研究. smarty是我刚学php的时候就采用的一款框架,他小巧灵活,提供基本的逻辑和页面分离,也带有缓存功能,是一款小巧的框架,我觉得对于开发静态页面比较多的小型网站是比较适用的,对于后台逻辑较复杂的网站还是显得有些力不从心. laravel是最近非常火的一个框架,他里面大量运…
这篇文章主要介绍CI核心框架工具类CI_Security. 安全类包含了一些方法,用于安全的处理输入数据,帮助你创建一个安全的应用.以下选取类中的重点方法进行说明. __construct() 在构造函数中,取出配置中csrf_expire,csrf_token_name,csrf_cookie_name的值,赋给类成员变量.接着,设置$this->_csrf_hash的值.如果cookie中存在csrf_cookie_name变量,则将值赋给$this->_csrf_hash,如果不存在,则…
这篇文章主要介绍CI核心框架工具类CI_Router. 如果说CI_URI类是用来解析URI,那么CI_Router类就应该是根据解析出来的URI来决定究竟访问哪一个文件和哪一个function. 详细步骤: 1.导入CI_Config和CI_URI类作为资源: 2.调用其中的_set_routing()方法,在该方法中首先把用户在config目录中设置的route.php的$route路由数组取出来: 3. 调用_parse_routes()方法,路由数组中的值和键可以利用正则表达式,甚至可以…
这篇文章主要介绍CI核心框架工具类CI_URI. 该类主要用来解析uri和决定路由的.关于URI和URL的关系请参考这位朋友的文章.简单来说URI是唯一定位的资源,URL是唯一资源的一个网络可能访问路径.所以从这个角度来看,作者在定义类名的时候还是非常严谨的,因为由于解析路由的存在,同一个资源可能有多个访问路径. 1.__construct() 该构造函数,主要针对enable_query_strings=true的情况作出一些处理. 举例说明: 1)当值为true时候,URL为:http://…
程序流程图 先来看看CI框架运行的程序流程图. 从图中我们 看到,index.php作为唯一的入口文件,会初始化CI框架运行所需的基本资源. 路由器(Routing)会根据http请求,确定如何处理: 如果存在缓存文件(cache),会直接返回给浏览器,不用走下面的系统流程: 在加载应用程序控制器(application controller)之前,会对http请求和用户请求数据进行必要的安全检查. 控制器会加载模型,核心类库,辅助函数,需要用到的插件等请求所需要的资源. 最后一步,渲染视图(v…
这是一个加载视图和文件的类. __construct() 设置视图文件的路径,和获取输出缓冲级别. initialize() 该方法只会被CI_Controller调用一次,会调用 $this->_ci_autoloader(); 自动去加载 config/autoload.php 中设置的类. library() 该方法用来调用 system/libraries 路径下的可用的工具库,比如 FTP Class, Encryption Library等.主要是被应用控制类调用. model()…