vivafei 发表于 2012-10-31 04:10:01

通用基础类 discuz_core

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 $init_mobile = true;

      // 是否已经初始化
      var $initated = false;

      // 列举全局变量,为清理做准备
      var $superglobal = array(
                'GLOBALS' => 1,
                '_GET' => 1,
                '_POST' => 1,
                '_REQUEST' => 1,
                '_COOKIE' => 1,
                '_SERVER' => 1,
                '_ENV' => 1,
                '_FILES' => 1,
      );

      /**
         * 建立唯一进程
         * @staticvar discuz_core $object
         * @return discuz_core
         */
      function &instance() {
                ......
      }

      /**
         * 预处理的调用
         */
      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_mobile();
                        $this->_init_cron();
                        $this->_init_misc();
                }
                $this->initated = true;
      }

      /**
         * 定义PHP环境信息常量和全局变量 $_G
         *
      */
      function _init_env() {
                ......
      }

      /**
         * 禁止对全局变量注入
         * slashes 处理
         * cookie 处理(去掉cookie前缀)
         * 将 $_GET 与 $_POST 合并
         *
      */
      function _init_input() {
                ......
      }

      /**
         * 加载配置文件
         *
      */
      function _init_config() {
                ......
      }

      /**
         * 输出处理
         * GET 参数跨站检测
         * 防页面刷新
         * gzip处理
         * 字符集处理
         *
      */
      function _init_output() {
                ......
      }

      /**
         * 禁止机器人访问
         *
      */
      function reject_robot() {
                ......
      }

      /**
         * GET 参数跨站检测
         *
         * 2011-3-8 增加对 CONTENT-TRANSFER-ENCODING 代码的检测 (IE MHTML 漏洞)
         */
      function _xss_check() {
                ......
      }

      /**
         * 获取客户端IP
         *
         */
      function _get_client_ip() {
                ......
      }

      /**
         * 初始化数据库类,同时选择主从数据库
         *
         */
      function _init_db() {
                ......
      }

      /**
         * 初始化session
         *
         */
      function _init_session() {
                ......
      }

      /**
         * 处理当前用户信息
         *
         */
      function _init_user() {
                ......
      }

      /**
         * 设置当前用户为游客
         *
         */
      function _init_guest() {
                ......
      }

      /**
         * 处理计划任务
         *
         */
      function _init_cron() {
                ......
      }

      /**
         * 杂项
         * 调入核心语言包
         * 处理全局时区设置
         * 处理被封禁用户
         * 站点开关检查
         * 手机端控制每页显示主题数和回帖数
         * 判断并执行每日登录奖励积分
         *
      */
      function _init_misc() {
                ......
      }

      /**
         * 加载全局设置 setting,风格 style,下一个任务 cronnextrun
         *
      */
      function _init_setting() {
                ......
      }

      /**
         * 处理当前界面风格
         * 定义风格常量
         *
      */
      function _init_style() {
                ......
      }

      /**
         * 初始化Discuz 内存读写引擎
         *
      */
      function _init_memory() {
                ......
      }

      /**
      * 手机访问时的开关判断,浏览器判断和相关特性
      *
      */
      function _init_mobile() {
                ......
      }

      /**
      * 设置时区
      * @param $timeoffset - 时区数值
      * @return 无
      */
      function timezone_set($timeoffset = 0) {
                ......
      }

      /**
      * 手机转码的$_POST多层数组递归转码
      * @param $value - 字符串
      * @return 返回转义好的字符串
      */
      function mobile_iconv_recurrence($value) {
                ......
      }
}
页: [1]
查看完整版本: 通用基础类 discuz_core