封装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();
}
}
?>
封装application类的更多相关文章
- 微信公众号开发系列-Http请求封装基类
HttpHelper请求封装基类,支持get请求和POS请求,方便微信开发接口交互,为后面接口交互做准备. 1.HttpHelper帮助基类 [csharp] view plaincopy using ...
- Http请求封装基类HttpHelper.cs
HttpHelper请求封装基类,支持get请求和POS请求http接口交互,为后面接口交互做准备. 1.HttpHelper帮助基类 using System; using System.Colle ...
- [Android] Android 使用 Greendao 操作 db sqlite(2)-- 封装DaoUtils类
继续接上文: Android 使用 Greendao 操作 db sqlite(1)-- 直接在MainActivity中调用 布局文件同上文一致,这里就不贴了. 一.封装DaoUtils类 User ...
- PDO 增删改查封装的类
Selecting Data 你在mysql_*中是这样做的 <?php $result = mysql_query('SELECT * from table') or die(mysql_er ...
- PHPEXCEL在thinkphp中封装成类使用
PHPEXCEL在thinkphp中封装成类使用 标签: phpexcel导出导入thinkphp -- : 435人阅读 评论() 收藏 举报 分类: php() 版权声明:本文为博主原创文章,未经 ...
- 适用于app.config与web.config的ConfigUtil读写工具类 基于MongoDb官方C#驱动封装MongoDbCsharpHelper类(CRUD类) 基于ASP.NET WEB API实现分布式数据访问中间层(提供对数据库的CRUD) C# 实现AOP 的几种常见方式
适用于app.config与web.config的ConfigUtil读写工具类 之前文章:<两种读写配置文件的方案(app.config与web.config通用)>,现在重新整理一 ...
- 基于小程序请求接口 wx.request 封装的类 axios 请求
基于小程序请求接口 wx.request 封装的类 axios 请求 Introduction wx.request 的配置.axios 的调用方式 源码戳我 feature 支持 wx.reques ...
- python封装发送邮件类
import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart i ...
- SpringMVC 自动封装枚举类的方法
springmvc默认无法自动封装枚举类,解决方法如下: 1.枚举类 public enum GoodsPromoteEnum { /** * 0 精品 */ fine("精品", ...
随机推荐
- C# 操作Cookie类
1.Cookie操作类 using System; using System.Data; using System.Configuration;using System.Web;using Syste ...
- Bootstrap 辅组类和响应式工具
1.情景文本颜色 //各种色调的字体 <p class="text-muted">Bootstrap 视频教程</p> <p class=" ...
- java类加载过程
类(型)的生命周期--装载.连接.初始化.卸载 Java虚拟机通过装载.连接和初始化一个Java类型,使该类型可以被正在运行的Java程序所使用. 1. 装载 装载阶段包括三个基本动作: ...
- jdk1.7的collections.sort(List list)排序问题
1.7使用旧排序: System.setProperty("java.util.Arrays.useLegacyMergeSort", "true"); 1.7 ...
- delphi android 录像(调用Java的功能)
delphi xe系列自带的控件都无法保存录像,经网友帮忙,昨天终于实现了录像功能(但有个问题是录像时无画面显示),程序主要使用了JMediaRecorder,MediaRecorder的使用方法可参 ...
- C++ 字符串操作常见函数
//字符串拷贝,排除指定字符 char *strcpy_exclude_char(char *dst, const int dst_len, const char *src, const char * ...
- zepto源码--$.map,$.each,$.grep--学习笔记
从相对比较简单的说起: 1.$.grep 获取一个新数组,新数组只包含回调函数中返回 true 的数组项. 调用javascript中数组原生函数filter,对elements进行过滤,保留回调函 ...
- background:transparent的作用
background的属性值 background : background-color | background-image | background-repeat | background-att ...
- 算法训练 A+B Problem
算法训练 A+B Problem 时间限制:1.0s 内存限制:512.0MB 问题描述 输入A,B. 输出A+B. 输入格式 输入包含两个整数A,B,用一个空格分隔. 输出格式 ...
- Ant学习-001-ant 基础知识及windows环境配置
一.Ant 概要基础知识 Apache Ant 是一个将软件编译.测试.部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发,用以构建应用,或结合其他开源测试工具例如 git.T ...