CI 中的函数库的中有20个函数,想看下CI的源代码,理解这几个函数是很重要的,就查看一下,记下笔记。
(1) is_php($version) | 如果php的运行版本比如当前的版本高返回 true, 否则返回 false
is_php 函数使用了一个静态变量 _is_php ,该变量是一个数组。运行的时候,如果执行is_php(5.4), 变量_is_php 就会产生一个元素$is_php[‘5.4’], 如果当前的php版本高于等于5.4,这个元素的值是true。因为是静态变量,所以这个函数运行过后,变量并不消失。下次再进行php版本是否高于5.4的时候,就可以直接输出结果。
(2)is_really_writable($file) | 是否有写入的权限
php中的 函数 is_writable ,返回的结果并不总是对的。这些情况出现的原因是在window系统或者启用了safe_mode 。如果是这两种情况就真实的随机生成一个文件。用来测试是否有写的权限。
(3)&load_class(class,directory = ‘libraries’, $param = NULL)
这个函数主要做了三件事情
- 加载一个类,并返回实例化的类。加载的顺序 APPPATH, BASEPATH
- 失败返回503, 成功返回该类的实例,并存储在这个函数中的静态变量 $_classes(数组类型) 中
- 执行 is_loaded ($class)
(4) &is_loaded($class = ”) | 返回全部已经实例化的类
如果一个类实例化是,是在 load_class 函数执行的期间实例化的的。
(5) &get_config (Array $replace = array()) | 获取配置或者更新配置
函数 get_config 中定义了静态变量 config , 首先加载的变量是从文件 APPPATH.’config/config.php’ 中获取的, 这个配置文件返回一个数组。 之后加载环境配置,如果文件(APPPATH.’config/’.ENVIRONMENT.’/config.php’)存在 。后 是优先级高的replace 。可以对已经存在的配置文件替换,或者新增。后返回全部的配置信息。
(6) config_item($item) | 获取一个具体的配置项
具体的实现通过 ,函数内的静态变量 ,获取配置信息 _config[0] =& get_config(); 因为是引用的关系,所以通过 get_config 设置的新的配置信息,也会在 config_item 中同步获到。这是使用静态变量_config[0] , 而不是 $_config 是因为
// references cannot be directly assigned to static variables, so we use an array
(7) &get_mimes | 获取mine类型
文件的mine类型是在APPPATH.’config/mimes.php’中的。存储在 静态变量 static $_mimes, 后返回所有的mine信息。
(8) is_https() | 判断是不是 https
通过 _SERVER[‘HTTPS’] ,_SERVER[‘HTTP_X_FORWARDED_PROTO’], $_SERVER[‘HTTP_FRONT_END_HTTPS’] 来实现
(9) is_cli() | 判断是不是 cli 模式
return (PHP_SAPI === ‘cli’ OR defined(‘STDIN’))
(10) show_error(message,status_code = 500, $heading = ‘An Error Was Encountered’)
显示错误,终通过类 Exceptions, 实现,输出 $_error->show_error
(11) show_404(page = ”,log_error = TRUE)
显示错误,终通过类 Exceptions, 实现,输出 $_error->show_404
(12) log_message(level,message)
输出错误信息,终通过 Log 类实现,
$_log[0]->write_log($level, $message);
(13) set_status_header(code = 200,text = ”)
如果是命令行模式,直接结束。终输出
> header(server_protocol.’ ‘.code.’ ‘.text, TRUE,code);
(14) _error_handler(severity,message, filepath,line)
(15) _exception_handler($exception)
以上两个接管默认的php处理。
(16) _shutdown_handler()
php运行结束后,执行的什么,通过这个完成
(17) remove_invisible_characters(str,url_encoded = TRUE)
移除部分字符
(18) html_escape(var,double_encode = TRUE)
$var 转换是html实体,数组也可以执行。