该文延续上篇文章: 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. iOS回顾笔记(04) -- UIScrollView的基本使用详解

    html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,bi ...

  2. UCSC genome browser 个人track 安装

    处理基因组数据,很多时候我们会觉得直接看序列文件不够直观,如果绘图的话,把n多G把数据用画图出来不仅费劲,就算操作也不方便.因此我们可以用UCSC开发出的genome browser,可以直接把数据信 ...

  3. jquery.datetimepicker.js 当鼠标离开时,不选中当前时间,以达到清空的目的

    validateOnBlur:true    当鼠标离开时,不选中当前时间,以达到清空的目的 使用方法:   // 时间设置         $('#BankProduct_sale_begin'). ...

  4. 《Django By Example》第八章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:还有4章!还有4章全书就翻译完成了 ...

  5. 深入Redux架构

    关于redux 之前写了一篇通过一个demo了解Redux,但对于redux的核心方法没有进行深入剖析,在此重新总结学习,完整的代码看这里.(参考了React 技术栈系列教程) 什么情况需要用redu ...

  6. java基础:学生管理系统

    package com.lovo.manager; import java.util.Scanner; /** * 学生管理 * * @author 向往的生活 * */public class St ...

  7. HTML确认密码

    html确认密码   今天准备分享一个小知识点,就是确认登录界面 <body ><form>输入户名: <input type="text" name ...

  8. switch 在什么时候可以不写default

    var point = (2,17) switch point { //case (var x,17): //    print("x = \(x)") case (var x,v ...

  9. UWP--MVVM简单计算器

    namespace LBI.DataBinding { /// <summary> /// 可用于自身或导航至 Frame 内部的空白页. /// </summary> pub ...

  10. Asp.net web api 知多少

    本系列主要翻译自<ASP.NET MVC Interview Questions and Answers >- By Shailendra Chauhan,想看英文原版的可访问http:/ ...