当前位置:编程学习 > php >>

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 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,