php discuz核心类函数分析
Java代码
<?php
/**
* [Discuz!] (C)2001-2099 Comsenz Inc.
* This is NOT a freeware, use is subject to license terms
*
* $Id: class_core.php 6914 2010-03-26 12:52:36Z cnteacher $
*/
///TODO 是将要完成的功能,包括禁止ip和禁止访问
//TODO 禁止ip
//TODO 禁止访问
///和DZ72一样,确保所有文件需要先加载核心文件
define('IN_DISCUZ', true);
/**
* Discuz 核心引擎
* 其他处理代码当中用到的变量不要在本核心 new 之前设置, 否则会自动清空
*
*/
class discuz_core {
// 数据库存储引擎
var $db = null;
// 内存缓冲object
var $mem = null;
// 会话 object
var $session = null;
// 程序配置
var $config = array();
// $_G 数组的映射
var $var = array();
// 加载缓存的数组
var $cachelist = array();
// 是否初始化
var $init_setting = true; //设置
var $init_user = true;//用户
var $init_session = true;//会话
var $init_cron = true;//任务计划
var $init_misc = true;//其他功能
var $init_memory = true;//内存
// 是否已经初始化
var $initated = false;
var $superglobal = array(
'GLOBALS' => 1,
'_GET' = 1,
'_POST' = 1,
'_REQUEST' = 1,
'_COOKIE' = 1,
'_SERVER' = 1,
'_ENV' = 1,
'_FILES' = 1,
);
function &instance() {
static $object;
if(empty($object)) {
$object = new discuz_core();
}
return $object;
}
function discuz_core() {
$this->_init_env();
$this->_init_config();
$this->_init_input();
$this->_init_output();
}
function init() {
if(!$this->initated) {
$this->_init_db();
$this->_init_memory();
$this->_init_user();
$this->_init_session();
$this->_init_setting();
$this->_init_cron();
$this->_init_misc();
}
$this->initated = true;
}
function _init_env() {
error_reporting(E_ALL ^ E_NOTICE);
// error_reporting(E_ALL);
///php 5.3前则关闭魔法引号匹配(自动转义)
if(phpversion() < '5.3.0') {
set_magic_quotes_runtime(0);
}
///程序主目录,根据核心文件确定,原来是-7 代表在include下,现在是12代表在source/class下
define('DISCUZ_ROOT', substr(dirname(__FILE__), 0, -12));
///和dz72一样,设置魔法引用(自动转义,单双引号反斜线)
define('MAGIC_QUOTES_GPC', function_exists('get_magic_quotes_gpc') && get_magic_quotes_gpc());
///判断字符编码转换函数是否存在
define('ICONV_ENABLE', function_exists('iconv'));
///亚洲字符转码函数是否存在, 因为mb_开头字符处理亚洲字符会比较高效,初步判断用于转码时先用mb_来处理:
define('MB_ENABLE', function_exists('mb_convert_encoding'));
///是否存在输出缓存压缩函数,这个函数的目的,是在确认浏览器支持页面压缩后,才用该函数来压缩所有输出内容,否则直接传输
define('EXT_OBGZIP', function_exists('ob_gzhandler'));
///和DZ72一样,不过当前时间戳被定义为一个常量,效率更高吧,也不用global了。
define('TIMESTAMP', time());
///获取默认时区
discuz_core::timezone_set();
///加载function_core.php,作用推测类似global.func.php
if(!defined('DISCUZ_CORE_FUNCTION') && !@include(DISCUZ_ROOT.'./source/function/function_core.php')) {
$this->error('function_core.php is missing');
}
//判断浏览器是否是易做图
define('IS_ROBOT', checkrobot());
//清理全局变量
 
补充:Web开发 , php ,