封装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();
    }
}
?>

原文地址:https://www.cnblogs.com/shaohuixia/p/5427185.html