欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

zhphp framework 三 框架工作流程

程序员文章站 2022-06-07 15:56:40
...
version_compare(PHP_VERSION, '5.2', '>=')?true:die('严重警告:php的版本低于php5.2!');#获取php版本并对php版本判断 Zhphp 框架最低ph版本为 php5.2
######################################## gzip compres start ############################################################
$HTTP_ACCEPT_ENCODING=$GLOBALS['_SERVER']['HTTP_ACCEPT_ENCODING'];
function CheckCanGzip(){#检测是否支持压缩
    global $HTTP_ACCEPT_ENCODING;
    if(!ini_get('zlib.output_compression')){#判断你是否配置php服务器压缩
        if(extension_loaded("zlib")){
            if (strpos($HTTP_ACCEPT_ENCODING, 'x-gzip') !== false){
                return "x-gzip";
            }else if (strpos($HTTP_ACCEPT_ENCODING,'gzip') !== false){
                return "gzip";
            }
        }
    }
    return 0;
}
/**
 * 页面压缩后输出
 * @param $content
 * @return string
 */
function ob_gzlib($content){
    $ENCODING = CheckCanGzip();
    if($ENCODING){
        $content = gzencode($content,6);
        header("Content-Encoding: ".$ENCODING);
        header("Vary: Accept-Encoding");
        header("Content-Length: ".strlen($content));
        return $content;
    }
    return false;
}
###################################  stystem set define start ##########################################################
defined('APP_DEBUG')?APP_DEBUG:define('APP_DEBUG',false);#是否设为调试
defined('DS')?DS:define( 'DS' , DIRECTORY_SEPARATOR );#分割符号
defined('DOC_ROOT')?DOC_ROOT:define('DOC_ROOT',$GLOBALS['_SERVER']['DOCUMENT_ROOT']);#得到服务器根目录地址
defined('APP_NAME')?APP_NAME:define('APP_NAME','application');#默认工程名
$http_type = ((isset($GLOBALS['_SERVER']['']) && $GLOBALS['_SERVER']['HTTPS'] == 'on') || (isset($GLOBALS['_SERVER']['HTTP_X_FORWARDED_PROTO']) && $GLOBALS['_SERVER']['HTTP_X_FORWARDED_PROTO'] == 'https')) ? 'https://' : 'http://';
$httpHost=isset($GLOBALS['_SERVER']['HTTP_HOST'])?$GLOBALS['_SERVER']['HTTP_HOST']:$_SERVER['HTTP_HOST'];
defined('CLASS_HTTP')?CLASS_HTTP:define('CLASS_HTTP',$http_type.$_SERVER['HTTP_HOST'] . substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/')));
$requestUri=isset($GLOBALS['_SERVER']['REQUEST_URI'])?$GLOBALS['_SERVER']['REQUEST_URI']:$_SERVER['REQUEST_URI'];
defined('HTTP')?HTTP:define('HTTP',$httpHost);
defined('APP_URI')?APP_URI:define('APP_URI',$http_type.$httpHost.$requestUri);#当前文件的脚本文件地址
defined('SERVER_HOST')?SERVER_HOST:define('SERVER_HOST',$http_type.$httpHost.'/');#域名地址
defined('SERVER_NAME')?SERVER_NAME:define('SERVER_NAME',$http_type.$httpHost);#不带 / 的域名
defined('APP_PATH')?APP_PATH:define('APP_PATH',str_replace('\\','/',dirname(dirname(dirname(__FILE__))).'/'.APP_NAME.'/'));
defined('PROJECT_PATH')?PROJECT_PATH:define('PROJECT_PATH',dirname(APP_PATH));#得到工程路径
if(PROJECT_PATH != DOC_ROOT){
$arr=explode('/',PROJECT_PATH);#分解工程
defined('PROJECT_NAME')?PROJECT_NAME:define('PROJECT_NAME',end($arr));#得到工程名并设置全局常量
}else{
 defined('PROJECT_NAME')?PROJECT_NAME:define('PROJECT_NAME',APP_NAME);#得到工程名并设置全局常量
}
defined('WEB_STATIC')?WEB_STATIC:define('WEB_STATIC',PROJECT_PATH.'/'.APP_NAME.'/web/');#静态渲染层地址	
defined('ROOT_PATH')?ROOT_PATH:define('ROOT_PATH',str_ireplace('\\','/',dirname(dirname(__FILE__))).'/');#得到当前的系统跟目录地址
defined('APP_HOST')?APP_HOST:define('APP_HOST',$httpHost.'/');
unset($http_type,$is_version,$httpHost,$requestUri,$project_work,$project_name,$arr,$environment);#手动销毁相应的变量
include_once ROOT_PATH.'common/define.php';#加载你的应用程序常量
######################################## php.ini config ###############################################
#程序对服务器的安全配置
ini_set('safe_mode','On');#打开php安全模式
ini_set('expose_php','Off');#对外隐藏php版本信息
ini_set('log_errors','On');#打开错误日志功能
ini_set('error_log',APP_PATH.'data/error_log/general_errors.log');#记录错误日志文件
ini_set('register_globals','Off');#关闭全局变量注册
ini_set('memory_limit','512M');#设置运行内存
ini_set('session.cache_expire',  180);
ini_set('session.use_trans_sid', 0);
ini_set('session.use_cookies',   1);
ini_set('session.auto_start',    0);
ini_set('session.gc_maxlifetime', 'time_in_seconds');
ini_set('session.name','zhphpsession');
ini_set('session.gc_probability',0);
ini_set('session.cookie_path',SESSION_PATH);
ini_set('session.cookie_domain',SESSION_DOMAIN);
ini_set('session.cookie_lifetime', '1800');
ini_set('session.save_path',SESSION_PATH);
include_once ROOT_PATH.'engine/loader.class.php'; #加载loader类
loader::init();
engine::loadCommon('common');#加载系统工具函数文件
config::loadConfig();#加载配置
set_error_handler('error');#自定义错误函数
################################## 开发环境  调试 ################################################################
$envir
switch($environment){
    case 1: defined('HTTP_URL')?HTTP_URL:define('HTTP_URL',SERVER_HOST.PROJECT_NAME.'/'); break;#设置全局常量
    case 2: defined('HTTP_URL')?HTTP_URL:define('HTTP_URL',SERVER_HOST); break;
    case 3: echo '等待测试'; break;
}
#设置错误显示级别
if(APP_DEBUG){
    ini_set('display_errors', true);
    error_reporting(E_ALL);
    browserDebug();#加载浏览器调试工具,方便在开发的时候,在浏览器调试,目前支持Firefox,Chrome
}else{
    ini_set('display_errors', false);
    error_reporting(0);
}
$GLOBALS['router']=engine::load('router');#路由引擎并实例化结果
############################## 预防sql注入与程序安全预防 start ################################
checkSafeInput();
if (!get_magic_quotes_gpc()) {
      $_GET       = addslashes_deep($_GET);
      $_POST      = addslashes_deep($_POST);
      $_COOKIE    = addslashes_deep($_COOKIE);
      $_REQUEST   = addslashes_deep($_REQUEST);
}

以上就介绍了zhphp framework 三 框架工作流程,包括了version_compare,全局变量,sql注入方面的内容,希望对PHP教程有兴趣的朋友有所帮助。