zoukankan      html  css  js  c++  java
  • 封装application类

    <?php
      //判断用户是否是通过入口文件访问
       if(!defined('ACCESS')){
         echo '非法请求';
         die;
       }
       //封装初始化类
       class Application {
        //设置字符编码
        private static function setCharset() {
            header('Content-type:text/html;charset=utf-8');
        }
        //设置系统常量
        private static function setDir() {
            define('ROOT_DIR',str_replace('\', '/', dirname(__DIR__)));
            define('CORE_DIR',ROOT_DIR.'/Core');
            define('ACTION_DIR',ROOT_DIR.'/Action');
            define('MODEL_DIR',ROOT_DIR.'/Model');
            define('VIEW_DIR',ROOT_DIR.'/View');
            define('Config_DIR',ROOT_DIR.'/Config');
            define('PUBLIC_DIR',ROOT_DIR.'/Public');
        }
        //设置错误信息
        private static function setErrors() {
            ini_set('display_errors', 1);
            error_reporting(E_ALL);
        }
        
        //初始化配置信息
        private static function setConfig() {
            $GLOBALS['config'] = include Config_DIR.'/config.php';
        }
        
        //加载Core核心文件
        public static function loadCore($class) {
            if(is_file(CORE_DIR."/$class.class.php")) {
                include CORE_DIR."/$class.class.php";
            }
        }
        
        //加载控制器文件
        public static function loadAction($class) {
        if(is_file(ACTION_DIR."/$class.class.php")) {
                include ACTION_DIR."/$class.class.php";
            }
        }
        
        //加载模型文件
        public static function loadModel($class) {
            if(is_file(MODEL_DIR."/$class.class.php")) {
                include_once MODEL_DIR."/$class.class.php";
            }
        }
        
        //自动加载机制
        private static function setAutoLoad() {
            //通过以下方式可以将loadCore,loadAction,loadModel追加到系统__autoload函数栈中
            //当系统初始化对象时,系统会自动到以下三个函数中寻找,但是有顺序要求,先注册先使用,如在当
            //前文件中已找到,其将不会继续向下寻找
            spl_autoload_register(array('Application','loadCore'));
            spl_autoload_register(array('Application','loadAction'));
            spl_autoload_register(array('Application','loadModel'));
        }
        
        //设置session
        private static function setSession() {
            @session_start();
        }
        
        //设置url
        private static function setUrl() {
             //默认显示Index控制器下的index方法
            $module = isset($_REQUEST['m'])?$_REQUEST['m']:'Index';
            $action = isset($_REQUEST['a'])?$_REQUEST['a']:'index';
            
            //把接收到的所有参数转化为小写
            $module = strtolower($module);
            $action = strtolower($action);
            //由于命名习惯问题,我们需要将模块参数的首字母转化为大写
            $module = ucfirst($module);
            
            define('MODULE',$module);
            define('ACTION',$action);
        }
        
        //设置权限
        private static function setPrivilege() {
            //如果是提供登录表单和登录验证方法,不需要验证用户是否已登录,其他均需用户登录后才可以进行操作
            if(!(MODULE=='Privilege' && (ACTION=='login' || ACTION=='sigin' || ACTION=='captcha'))) {
                $_SESSION['user'] = 1;
                if(!isset($_SESSION['user'])) {
                    header('Location:index.php');
                }
            }
        }
        
        //设置分发
        private static function setDispatch() {
            $module = MODULE.'Action';
            $action = ACTION;
            //创建对象
            $module = new $module();
            $module->$action();
        }
        
        //定义初始化方法
        public static function run() {
            //1)初始化字符集
            self::setCharset();
            //2)初始化系统路径常量
            self::setDir();
            //3 )初始化错误配置
            self::setErrors();
            //4)初始化配置信息
            self::setConfig();
            //5)自动加载
            self::setAutoLoad();
            //6)开启session
            self::setSession();
            //7)url初始化
            self::setUrl();
            //8)权限验证
            self::setPrivilege();
            //9)分发
            self::setDispatch();
        }
    }
    ?>

  • 相关阅读:
    Web端导出CSV
    dojo/dom-style样式操作学习笔记
    dojo/dom源码学习
    上层建筑——DOM元素的特性与属性(dojo/dom-prop)
    上层建筑——DOM元素的特性与属性(dojo/dom-attr)
    返本求源——DOM元素的特性与属性
    DOM扩展札记
    以代码爱好者角度来看AMD与CMD
    dojo事件驱动编程之事件绑定
    通过Web.config中的configSections配置自己系统的全局常量
  • 原文地址:https://www.cnblogs.com/shaohuixia/p/5427185.html
Copyright © 2011-2022 走看看