封装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("精品", ...
随机推荐
- PHP基础语法: echo,var_dump, 常用函数:随机数:拆分字符串:explode()、rand()、日期时间:time()、字符串转化为时间戳:strtotime()可变参数的函数:PHP里数组长度表示方法:count($attr[指数组]);字符串长度:strlen($a)
PHP语言原理:先把代码显示在源代码中,再通过浏览器解析在网页上 a. 1.substr; //用于输出字符串中,需要的某一部分 <?PHP $a="learn php"; ...
- Mongo对内嵌文档的CRUD
{ "_id" : ObjectId("5706032acd0a6194868cf53e"), "list" : { "age&q ...
- HBase的二级索引,以及phoenix的安装(需再做一次)
一:HBase的二级索引 1.讲解 uid+ts 11111_20161126111111:查询某一uid的某一个时间段内的数据 查询某一时间段内所有用户的数据:按照时间 索引表 rowkey:ts+ ...
- HDFS API 文件读写代码演示
一:准备工作 1.新建class类 2.开启HDFS服务 3.将配置文件拷贝进resources路径 方便了Configuration的读取配置. 二:读出HDFS文件系统中的文件到控制台 4.读出在 ...
- win环境下,用虚拟化工具打包Qt动态编译exe的过程(使用Enigma Virtual Box)
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://goldlion.blog.51cto.com/4127613/834075 引子 ...
- php--yii2.0的安装
1.php.ini中去掉php_openssl.dll前面的“;” 2.注意phpstudy中php版本使用5.4n 3.环境OK后,使用自己的域名访问下yii2.0中advanced中的requir ...
- Nodejs电影建站开发实例(上)
网站环境:使用express框架.bootstrap样式.jade模板.mongoose数据库 npm insatll express -g npm insatll jada -g npm insat ...
- JS实现页面回到顶部效果
[代码] <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...
- Insecure world writable dir /usr/local in PATH, mode 040777
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/universal-darwin14/rbconfi ...
- 网页flv下载探索_1
最近看了一个优酷视频(非优酷网站,最终地址指向优酷),用chrome开发者工具,可找到flv地址如下,简单摘录如下: http://27.221.100.104/657D4D2878C3382C781 ...