封装MVC(三)
2016-12-25 20:55
405 查看
完成封装MVC(三)后,再来看看library下的共用文件shared.php应该怎么写。
<?php
/* 检查是否为开发环境并设置是否记录错误日志 */
function setReporting(){
if (DEVELOPMENT_ENVIRONMENT == true) {
error_reporting(E_ALL);
ini_set('display_errors','On');
} else {
error_reporting(E_ALL);
ini_set('display_errors','Off');
ini_set('log_errors','On');
ini_set('error_log',ROOT.DS. 'tmp' .DS. 'logs' .DS. 'error.log');
}
}
如图所示:
/* 检测敏感字符转义(Magic Quotes)并移除他们 */
function stripSlashDeep($value){
$value = is_array($value) ? array_map('stripSlashDeep',$value) : stripslashes($value);
return $value;
}
function removeMagicQuotes(){
if (get_magic_quotes_gpc()) {
$_GET = stripSlashDeep($_GET);
$_POST = stripSlashDeep($_POST);
$_COOKIE = stripSlashDeep($_COOKIE);
}
}
如图所示:
/* 检测全局变量设置(register globals)并移除他们 */
function unregisterGlobals(){
if (ini_get('register_globals')) {
$array = array('_SESSION','_POST','_GET','_COOKIE','_REQUEST','_SERVER','_ENV','_FILES');
foreach ($array as $value) {
foreach ($GLOBALS[$value] as $key => $var) {
if ($var === $GLOBALS[$key]) {
unset($GLOBALS[$key]);
}
}
}
}
}
如图所示:
/* 主请求方法,主要目的拆分URL请求 */
function callHook() {
global $url;
$urlArray = array();
$urlArray = explode("/",$url);
$controller = $urlArray[0];
array_shift($urlArray);
$action = $urlArray[0];
array_shift($urlArray);
$queryString = $urlArray;
$controllerName = $controller;
$controller = ucwords($controller);
$model = rtrim($controller, 's');
$controller .= 'Controller';
$dispatch = new $controller($model,$controllerName,$action);
if ((int)method_exists($controller, $action)) {
call_user_func_array(array($dispatch,$action),$queryString);
} else {
/* 生成错误代码 */
}
}
如图所示:
/* 自动加载控制器和模型 */
function __autoload($className) {
if (file_exists(ROOT . DS . 'library' . DS . strtolower($className) . '.class.php')) {
require_once(ROOT . DS . 'library' . DS . strtolower($className) . '.class.php');
} else if (file_exists(ROOT . DS . 'application' . DS . 'controllers' . DS . strtolower($className) . '.php')) {
require_once(ROOT . DS . 'application' . DS . 'controllers' . DS . strtolower($className) . '.php');
} else if (file_exists(ROOT . DS . 'application' . DS . 'models' . DS . strtolower($className) . '.php')) {
require_once(ROOT . DS . 'application' . DS . 'models' . DS . strtolower($className) . '.php');
} else {
/* 生成错误代码 */
}
}
setReporting();
removeMagicQuotes();
unregisterGlobals();
callHook();
如图所示:
接下来的操作就是在library中建立程序所需要的基类,包括控制器、模型和视图的基类。
下面操作请点击:封装MVC(四)
<?php
/* 检查是否为开发环境并设置是否记录错误日志 */
function setReporting(){
if (DEVELOPMENT_ENVIRONMENT == true) {
error_reporting(E_ALL);
ini_set('display_errors','On');
} else {
error_reporting(E_ALL);
ini_set('display_errors','Off');
ini_set('log_errors','On');
ini_set('error_log',ROOT.DS. 'tmp' .DS. 'logs' .DS. 'error.log');
}
}
如图所示:
/* 检测敏感字符转义(Magic Quotes)并移除他们 */
function stripSlashDeep($value){
$value = is_array($value) ? array_map('stripSlashDeep',$value) : stripslashes($value);
return $value;
}
function removeMagicQuotes(){
if (get_magic_quotes_gpc()) {
$_GET = stripSlashDeep($_GET);
$_POST = stripSlashDeep($_POST);
$_COOKIE = stripSlashDeep($_COOKIE);
}
}
如图所示:
/* 检测全局变量设置(register globals)并移除他们 */
function unregisterGlobals(){
if (ini_get('register_globals')) {
$array = array('_SESSION','_POST','_GET','_COOKIE','_REQUEST','_SERVER','_ENV','_FILES');
foreach ($array as $value) {
foreach ($GLOBALS[$value] as $key => $var) {
if ($var === $GLOBALS[$key]) {
unset($GLOBALS[$key]);
}
}
}
}
}
如图所示:
/* 主请求方法,主要目的拆分URL请求 */
function callHook() {
global $url;
$urlArray = array();
$urlArray = explode("/",$url);
$controller = $urlArray[0];
array_shift($urlArray);
$action = $urlArray[0];
array_shift($urlArray);
$queryString = $urlArray;
$controllerName = $controller;
$controller = ucwords($controller);
$model = rtrim($controller, 's');
$controller .= 'Controller';
$dispatch = new $controller($model,$controllerName,$action);
if ((int)method_exists($controller, $action)) {
call_user_func_array(array($dispatch,$action),$queryString);
} else {
/* 生成错误代码 */
}
}
如图所示:
/* 自动加载控制器和模型 */
function __autoload($className) {
if (file_exists(ROOT . DS . 'library' . DS . strtolower($className) . '.class.php')) {
require_once(ROOT . DS . 'library' . DS . strtolower($className) . '.class.php');
} else if (file_exists(ROOT . DS . 'application' . DS . 'controllers' . DS . strtolower($className) . '.php')) {
require_once(ROOT . DS . 'application' . DS . 'controllers' . DS . strtolower($className) . '.php');
} else if (file_exists(ROOT . DS . 'application' . DS . 'models' . DS . strtolower($className) . '.php')) {
require_once(ROOT . DS . 'application' . DS . 'models' . DS . strtolower($className) . '.php');
} else {
/* 生成错误代码 */
}
}
setReporting();
removeMagicQuotes();
unregisterGlobals();
callHook();
如图所示:
接下来的操作就是在library中建立程序所需要的基类,包括控制器、模型和视图的基类。
下面操作请点击:封装MVC(四)
相关文章推荐
- 一个关于if else容易迷惑的问题
- 分享微信开发Html5轻游戏中的几个坑
- PHP5.2.*防止Hash冲突拒绝服务攻击的Patch
- 深入理解PHP之匿名函数
- JSP/PHP基于Ajax的分页功能实现
- 关于PHP通过PDO用中文条件查询MySQL的问题。
- 什么是设计模式
- PHP数据库长连接mysql_pconnect的细节
- Php Installing An Expansion
- Laravel5.3 表单验证中文报错提示语言包
- 10 件在 PHP 7 中不要做的事情
- 写程序的时候应该如何思考?
- rem : web app适配的秘密武器
- jquery高级应用之Deferred对象
- 关于浮动与清除浮动,你应该知道的
- 数组reduce方法的高级技巧
- php7 读取php.ini[4]
- 一步一步跟我学易语言之第二个易程序菜单设计