该文延续上篇文章: CI框架浅析(一)

在CI框架的核心库中,CodeIgniter.php负责加载所有需要的类库,第一个加载的是公共库 core/Common.php

Common.php 负责加载以下公共方法:

方法名
注释
is_php($version)
判断$version是否小于或等于当前安装的PHP版本
is_really_writable($file)
判断该文件是否可写
load_class($class, $directory = 'libraries', $param = NULL)
加载类,但只能加载前缀为CI 的类,或前缀为自己配置的 $config['subclass_prefix'
is_loaded
返回已经加载类的数组
get_config(Array $replace = array())
加载 application/config/config.php 配置数组
application/config/ENVIRONMENT/config.php ENVIRONMENT为你开发的环境
config_item($item)
获取配置项的具体一项值
get_mimes()
获取config/mimes.php 的元数据数组
is_https()
判断是否是 https 加密协议
is_cli()
判断是否是在命令行执行
show_error()
加载 Exception,在自己的模板输出错误,然后exit
show_404($page = '', $log_error = TRUE)
加载 Exception,在自己的模板输出404错误
log_message($level, $message)
输出日志信息(不要把config.php 的log_threshold变量设 置为 4,太卡了,消耗太多的性能)
set_status_header($code = 200, $text = '')
设置http回应状态头
_error_handler( )
错误处理,加载Exceptions类,然后用日志输出错误,如果是验证的错误,则exit(1)退出程序。
_exception_handler($exception)
异常处理,加载Exceptions类,记录异常,然后 exit(1)退出。
_shutdown_handler()
宕机处理,不同的错误级别做相应的处理,调用_error_handler 方法处理
remove_invisible_characters()
移除不可见的字符
html_escape($var, $double_encode = TRUE)
html 转义
_stringify_attributes($attributes, $js = FALSE)
将数组等其它类型,转换成字符串类型。
function_usable($function_name)
方法可用,该方法只是暂时的,后期可能会移除。这方法需要加载Suhosin (一个PHP的补丁或拓展)

Common.php中也调用了 Exceptions.php :

方法名 注释
log_exception($severity, $message, $filepath, $line)
记录异常信息,保存在日志里
show_404($page = '', $log_error = TRUE)
记录错误的日志,且调用show_error()输出错误页面
show_error($heading, $message, $template = 'error_general', $status_code = 500)
找到对应的模板,然后输出错误的html页面
show_exception($exception)
输出异常的html页面
show_php_error($severity, $message, $filepath, $line)
本地PHP出错处理,输出相应的错误页面。
if (file_exists(APPPATH.'config/'.ENVIRONMENT.'/constants.php'))
{
require_once(APPPATH.'config/'.ENVIRONMENT.'/constants.php');
}

从代码可以知道:

       加载框架的自定义常量,可在applcation/config 创建不同环境目录,如development 与production,在这两个目录下,都创建constants.php,然后创建各环境需要的常量。从其它的代码总结来,可以根据开发的情况,给予配置不同常量,以及config 的几乎所有配置,让用户在开发或者发布的时候,配置不同的信息。

CI框架浅析(二)的更多相关文章

  1. CI框架浅析

    CI框架浅析(全篇)     业余花了点时间看看CodeIgniter框架(简称CI),CI目前的稳定版本是 3.X,4.0版本已经出来了,但还在测试中,所以我分析的还是 3.x 版本. CI是一个很 ...

  2. CI框架浅析(全篇)

        业余花了点时间看看CodeIgniter框架(简称CI),CI目前的稳定版本是 3.X,4.0版本已经出来了,但还在测试中,所以我分析的还是 3.x 版本. CI是一个很轻便的框架,整个下载包 ...

  3. CI框架浅析(一)

            CodeIgniter 是一个小巧但功能强大的 PHP 框架,作为一个简单而“优雅”的工具包,它可以为开发者们建立功能完善的 Web 应用程序.本人使用CI框架有一段时间了,现在决定把 ...

  4. ci框架(二)

    自定义SQL语句                                                                             当提供的API满足不了我们对S ...

  5. 初学后台框架总结篇二——快速了解CI框架

    一.下载CI框架并安装,这里放置一张自己的项目目录结构图 目录框架搭建好之后开始将自己的项目与框架融合 二.更改相关配置 1.用任何文本编辑器打开 application/config/config. ...

  6. 二十七、CI框架之自己写分页类并加载(写分页还是有难度,搞了一整天)

    一.我们写好自己的分页代码,防止library目录中,带构造函数 二.在模型中,添加2个函数,一个是查询数据的条数,第二个是取出数据库中的数据 三.在控制中,写入相应的代码,如下: 四.在界面中,写入 ...

  7. PHP CI 框架简单使用(二)

    我们简单认识一下CI框架的MVC.示例代码如下 //CI控制器文件Home.php <?php defined('BASEPATH') OR exit('No direct script acc ...

  8. 第一天ci框架开发商城1

    ci框架开发商城1 1/28/2016 9:43:52 PM userguide删除 system application controllers 控制器 models 模型 views 视图 模板 ...

  9. CI框架,源代码一次性判断获取post(get)数据是否有某个字段值为空方法

    一.以下是CI框架 1.把所有的要接收的字段放在数组中 例: 我要接收:id,name,age,mobile 等字段 $req = array('id','name','age','mobile'); ...

随机推荐

  1. tomcat 假死

    1.1 编写目的 为了方便大家以后发现进程假死的时候能够正常的分析并且第一时间保留现场快照.1.2编写背景最近服务器发现tomcat的应用会偶尔出现无法访问的情况.经过一段时间的观察最近又发现有台to ...

  2. 《类型编程晋级——shapeless类库使用指南》前言及第一章翻译

    从年初开始进行此项工作,我和合作伙伴包亮付出了大量而艰辛的劳动,现基本翻译完毕,有出版意向,如果有意向欢迎联系,不甚感激!也欢迎各位博友对此翻译提出意见建议以及指导如何出版,在此谢过! 前言 时间回到 ...

  3. 【曝】苹果应用商店逾千款iOS应用存安全漏洞

    据国外网站Ibtimes报道,知名网络安全公司FireEye日前警告称,由于一款名为“JSPatch”.可帮助开发者修改应用程序的软件上存在安全漏洞,导致苹果应用商店内1000多款使用了该框架的iOS ...

  4. javascript的字符串判断方法

    Javascript中判断符号主要有:==.!=.===.!== ==.!=这两个符号在判断之前会先对变量类型进行转换,如果类型相同会再比较值; ===.!==这是直接判断两个变量的类型,如果类型不一 ...

  5. Python学习路线图

    文章转载自「开发者圆桌」一个关于开发者入门.进阶.踩坑的微信公众号 Python学习路线图你可以通过百度云盘下载观看对应的视频 链接: http://pan.baidu.com/s/1c2zLllA ...

  6. Implement Stack using Queues leetcode

    Implement the following operations of a stack using queues. push(x) -- Push element x onto stack. po ...

  7. SQL_Join 小总结

    原文出自 :http://www.nowamagic.net/librarys/veda/detail/936 对于SQL的Join,在学习起来可能是比较乱的.我们知道,SQL的Join语法有很多in ...

  8. ionic/cordvoa 修改platform文件夹里的文件,build会覆盖问题

    这个问题开始让我感觉很崩溃,然后,我也很意外,如果遇到可以试一试 情景: 编辑platform/android/build.gradle 看了一下cordova 命令,好像还没这个命令,但是我还真的执 ...

  9. SpringMVC4+MyBatis+SQL Server2014+druid 监控SQL运行情况

    前言 在基于SpringMVC+MyBatis的开发过程中,我们希望能看到自己手写SQL的执行情况,在开发阶段我们可以配置log4j在控制台里基于debug模式查看,那么上线后,在生产声我们想查看SQ ...

  10. 让我的分页类获取sessionFactory

    我们知道在Hibernate里比较重要的sessionFactory,经过Spring的管理可以很好地为Spring里注入使用的bean服务(提供数据源的使用),但是,当我们所要使用的类不是像我们尝试 ...