封装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("精品", ...
随机推荐
- android 直接启动其他应用的Service
最近在做一个小插件,没有图标没有activity,利用其他APK启动它的service. 直奔主题,插件A,安装插件的应用B. B安装A后,由于A刚被安装,没有注册广播接收器,这里不考虑AIDL.需求 ...
- Maven实战(七)settings.xml相关配置
一.简介 settings.xml对于maven来说相当于全局性的配置,用于所有的项目,当Maven运行过程中的各种配置,例如pom.xml,不想绑定到一个固定的project或者要分配给用户时,我们 ...
- pod》error:The dependency `` is not used in any concrete target
内容提要: podfile升级之后到最新版本,pod里的内容必须明确指出所用第三方库的target,否则会出现The dependency `` is not used in any concrete ...
- linux pipe
1. 函数说明 pipe(建立管道): 1) 头文件 #include<unistd.h> 2) 定义函数: int pipe(int filedes[2]); 3) 函数说明: pipe ...
- Java学习-012-文件删除实例及源代码
此文源码主要为应用 Java 创建文件的源代码.若有不足之处,敬请大神指正,不胜感激! 文件删除源代码如下: /** * @function 文件操作:删除文件.若文件存在且未被占用,则删除文件:若文 ...
- 打造安全的App!iOS安全系列之 HTTPS
如何打造一个安全的App?这是每一个移动开发者必须面对的问题.在移动App开发领域,开发工程师对于安全方面的考虑普遍比较欠缺,而由于iOS平台的封闭性,遭遇到的安全问题相比于Android来说要少得多 ...
- myscroll
<!DOCTYPE html> <head><meta http-equiv="Content-Type" content="text/ht ...
- Ball Tracking with OpenCV
http://www.pyimagesearch.com/2015/09/14/ball-tracking-with-opencv/
- 通过 ec2-api / boto 调用 OpenStack 功能
通过 ec2-api / boto 调用 OpenStack 功能 OpenStack 支持 amazon ec2 的 api,并能通过 python 库 boto 来进行调用.目前,社区在把 ec2 ...
- JBOSS安全配置
1.jmx-console登录的用户名和密码设置 默认情况访问http://localhost:8080/jmx-console就可以浏览jboss的部署管理的一些信息,不需要输入用户名和密码,使用起 ...