MVC核心文件Application.class.php设计实例
2015-05-21 21:54
357 查看
MVC核心文件Application.class.php设计实例
<?php //通过判断ACCESS常量,判断来源是否为非法请求 if(!defined('ACCESS')) { echo '非法入侵'; exit; } class Application { //设置字符编码 private static function setHeader() { header('Content-type:text/html;charset=utf-8'); } //设置系统常量 private static function setConst() { 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', 0); //error_reporting(E_ALL); } //初始化配置信息 private static function setConfig() { $GLOBALS['config'] = include_once Config_DIR.'/config.php'; } //加载Core核心文件 public static function loadCore($class) { if(is_file(CORE_DIR."/$class.class.php")) { include_once CORE_DIR."/$class.class.php"; } } //加载控制器文件 public static function loadAction($class) { if(is_file(ACTION_DIR."/$class.class.php")) { include_once 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(); //$user=array(); //$user['id']=1; //$user['username']='zhangsan'; //$_SESSION['user']=$user; } //设置url private static function setUrl() { $module = isset($_REQUEST['module'])?$_REQUEST['module']:'privilege'; $action = isset($_REQUEST['action'])?$_REQUEST['action']:'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'))) { 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::setHeader(); //2)初始化系统常量 self::setConst(); //3 )初始化错误配置 self::setErrors(); //4)初始化配置信息 self::setConfig(); //5)自动加载 self::setAutoLoad(); //6)开启session self::setSession(); ////////// 测试session////////////////////////// //7)url初始化 self::setUrl(); //8)权限验证 //self::setPrivilege(); //9)分发 self::setDispatch(); } } ?>
相关文章推荐
- php学习之道:php中soap的使用实例以及生成WSDL文件,提供自动生成WSDL文件的类库——SoapDiscovery.class.php类
- 【discuzX2】/source/class/class_core.php文件中核心高效缓存类discuz_memory分析
- php中soap的使用实例以及生成WSDL文件,提供自动生成WSDL文件的类库——SoapDiscovery.class.php类
- PHP实例学习之————MVC架构模式分析与设计
- 【discuzX2】/source/class/class_core.php文件中核心基础类库中discuz_core类分析
- system\classes\Kohana.php 空的核心扩展文件也可以把它复制到application\classes下面写自己的扩展
- 【discuzX2】/source/class/class_core.php文件中核心基础类库中discuz_core类分析
- php学习之道:php中soap的使用实例以及生成WSDL文件,提供自己主动生成WSDL文件的类库——SoapDiscovery.class.php类
- 【discuzX2】/source/class/class_core.php文件中核心高效缓存类discuz_memory分析
- DISCUZX2.0 核心文件 class_core.php 分析之 – discuz_process
- php中soap的使用实例以及生成WSDL文件,提供自动生成WSDL文件的类库——SoapDiscovery.class.php类
- 【phpcms-v9】phpcms-v9应用程序创建类phpcms/libs/classes/application.class.php文件分析
- discuz 3.x 核心文件class_core.php解析
- php __FILE__,__CLASS__等魔术变量,及实例
- 【discuzX2】/source/class/class_core.php文件中session会话类discuz_session分析
- php中glob();函数用户加载核心类或者配置文件
- 简单的php文件上传(实例)
- java中读取配置文件的方法fileSystemXmlapplicationContext与classPathXmlApplicationContext
- SAE saestorage.class.php文件的封装代码
- php中通过Ajax如何实现异步文件上传的代码实例