Exphp代码走读

Main.php文件

<?php
if(!defined(‘APP‘)){
    exit(‘APP does not defined‘);
}
//必须先定义APP常量

if(DBUG==1){
    ini_set(‘display_errors‘,1);
    error_reporting(E_ALL ^ E_NOTICE);
}else{
    ini_set(‘display_errors‘,0);
    error_reporting(0);
}
//判断DEBUG是否设置为1,为1开启错误提示,其余关闭错误提示

/*
if(ini_get(‘register_globals‘)){
exit(‘php.ini register_globals must is off!‘);
}
//必须关闭注册为全局变量的使用

if(ini_get(‘session_auto_start‘)!=0){
exit(‘php.ini session_auto_start must is 0 !‘);
}
//必须关闭session的自动启动

if(!defined(‘STDIN‘) && !in_array(getsrv(‘REQUEST_METHOD‘),array(‘GET‘,‘POST‘,‘PUT‘,‘DELETE‘,‘OPTIONS‘,‘HEAD‘))){
exit(‘Invalid Request Method‘);
}
*/

unset($_REQUEST,$HTTP_ENV_VARS,$HTTP_POST_VARS,$HTTP_GET_VARS,$HTTP_COOKIE_VARS,$HTTP_SERVER_VARS,$HTTP_POST_FILES);
//过滤REQUEST和旧版本的php参数

define(‘VERSION‘,‘5.0.0.1403150‘);

define(‘SYSDIR‘,realpath(__DIR__));
//__DIR__是php5.4以后才有的,之前的版本可以用dirname(__FILE__)实现

define(‘ABSROOT‘,substr(SYSDIR,0,-7));

if(!defined(‘APPIN‘)){
define(‘APPIN‘,‘App‘);
}
//定义应用的顶级目录,默认为App

if(!defined(‘APPNAME‘)){
define(‘APPNAME‘,APP);
}
//定义应用的别名,默认APPNAME==APP
//
//
define(‘APPROOT‘,ABSROOT.‘/‘.APPIN);
//定义应用的顶级目录的绝对路径
define(‘APPDIR‘,APPROOT.‘/‘.APPNAME);
//定义应用的绝对路径
define(‘APPNS‘,APPIN.‘\\‘.APPNAME);
//定义命名空间,如App\\test

date_default_timezone_set(‘Etc/GMT-8‘);
//定义默认的时区

require SYSDIR . ‘/Core/common.php‘;
//加载System/Core/common.php 文件
//
spl_autoload_register(‘autoload‘);
//注册自动加载函数
//
//
//$App = new System\Core\App();
//实例化应用类App
//$App->run();
//运行App

common.php

<?php

function autoload($className){
    $classPath = ABSROOT . ‘/‘ . str_replace(‘\\‘,‘/‘,$className) . ‘.php‘;
//根据className得到文件的路径,把\替换成/
    if(is_file($classPath)){
        //文件存在,加载文件
        require $classPath;
    }else{
        throw new \Exception($className.‘ does not exists.‘,404);
        //抛出异常
    }
}

//$callback 1:NULL,调用函数。2:不为false,绑定函数,3,false,接触绑定
//$value 1,事件存在,为参数,2,事件不存在,为默认值
function event($event,$value=NULL,$callback=NULL){
    static $_eventStore;

    if($callback===NULL){
        if(isset($_eventStore[$event])){
            foreach($_eventStore[$event] as $function){
            $value = call_user_func($function,$value);
            }
        }
        return $value;
    }else{
        if($callback){
        $_eventStore[$event][] = $callback;
        }else{
        unset($_eventStore[$event]);
        }
    }

}

function event2($event,$callback=NULL,$params=‘‘){

    static $_eventMaps;
    if($callback === NULL){
            foreach($_eventMaps[$event] as $function){
            call_user_func_array($function,$params);
            }
    }else{
          if(is_callable($callback)){
          $_eventMaps[$event][] = $callback;
          }elseif(!$callback){
          unset($_eventMaps[$event]);
          }else{
          exit(‘error‘);
          }
    }

}

//$key=NULL,返回$_configStore;
//$key=array,$_configStore = $key;
//isset($_configStore[$key])?$_configStore[$key]:$defaultValue
function config_item($key=NULL,$defaultValue=NULL){
    static $_configStore;

    if($key === NULL){
    return $_configStore;
    }

    if(is_array($key)){
        $_configStore=$key;
    return ;
    }

    if(!isset($_configStore[$key])){
    return $defaultValue;
    }

    return $_configStore[$key];
}

function config_item2($key=‘‘,$value=‘‘){
    static $_configMaps=array();
    if(is_array($key)){
        $_configMaps = array_merge($_configMaps,$key);
    }elseif($key == ‘‘){
        return $_configMaps;
    }elseif($value == ‘‘){
    return $_configMaps[$key];
    }else{
    $_configMaps[$key] = $value;
    }
}

//$key===NULL,return $_globalStore
//$value===NULL,return $_globalStore[$key]
//is_array($key)?$_globalStore+=$key:$_globalStore[$key]=$value;
function global_item($key=NULL,$value=NULL){
    static $_globalStore = array();
    if($key === NULL){
        return $_globalStore;
    }

    if($value===NULL){
        if(isset($_globalStore[$key])){
        return $_globalStore[$key];
        }
        return NULL;
    }else{
        if(is_array($key)){
        $_globalStore += $key;
        }else{
        $_globalStore[$key] = $value;
        }
    }

}

function global_item($key=NULL,$value=NULL){
    static $_globalStore = array();
    if($key === NULL){
    return $_globalStore;
    }
    if($value===NULL){
        if(isset($_globalStore[$key])){
        return $_globalStore[$key];
        }
        return NULL;
    }else{
        if(is_array($key)){
        $_globalStore+=$key;
        }else{
        $_globalStore[$key] = $value;
        }
    }
}

//$expire<0,del($key);
//
function cache_item($key,$value=NULL,$expire=864000){i
    global $App;
if($expire < 0){
return $App->Cache->del($key);
}
if($value===NULL){
return $App->Cache->get($key,$expire);
}else{
$App->Cache->set($key,$value,$expire);
}
}

function cache_item2($key,$value,$expire){
    global $App;
    if($expire < 0){
    return $App->Cache->del($key);
    }
    if($value===NULL){
    return $App->Cache->get($key,$expire);
    }else{
    return $App->Cache->set($key,$value,$expire);
    }
}

function get_item($key,$itemOption=NULL){
    if($itemOption === TRUE){
    if(isset($_GET[$key]))?numf($_GET[$key]):0;
    }else{
    if(isset($_GET[$key]))?(is_string($_GET[$key])?strf($_GET[$key],$itemOption):$_GET[$key]):‘‘;
    }
}

function post_item($key,$itemOption=NULL){
    if($itemOption === TRUE){
    return isset($_POST[$key])?numf($_POST[$key]):0;
    }else{
    return isset($_POST[$key])?(is_string($_POST[$key])?strf($_POST[$key],$itemOption):$_POST[$key]):‘‘;
    }
}

function cookie_item($key,$value=NULL,$expire=8640000){
    $key = config_item(‘cookie_pre‘) . $key;
    if($value === NULL){
    return isset($_COOKIE[$key])?trim($_COOKIE[$key]):‘‘;
    }else{
    setcookie($key,$value,$expire?global_item(‘timestamp‘)+$expire : 0,‘/‘,config_item(‘cookie_domain‘));
    }
}

function cookie_item2($key,$value=NULL,$expire=8640000){
    $key=config_item(‘cookie_pre‘).$key;
    if($value===NULL){
    return isset($_COOKIE[$key])?trim($_COOKIE[$key]):‘‘;
    }else{
    setcookie($key,$value,$expire?global_item(‘timestamp‘)+$expire:0,‘/‘,config_item(‘cookie_domain‘));
    }
}

function getsrv($key){
return isset($_SERVER[$key])?$_SERVER[$key]:‘‘;
}

function addslashess($var){
    if(is_array($var)){
        foreach($var as $key=>$val){
    $var[$key] = addslashess($val);
        }
    }else{
    $var = addslashes($var);
    }
    return $var;
}

function safe_filter($var){
return addslashess($var);
}

function numf($var){
    return is_numeric($var) ? $var:intval($var);
}

function strf($var,$allowableTags=NULL){
    return trim(($allowableTags)?$var:strip_tags($var,$allowableTags))
}

function arrayf($var,$separator=‘,‘){
return is_array($var)?$var:explode($separator,$var);
}
时间: 2024-10-21 05:48:09

Exphp代码走读的相关文章

Exphp代码走读(二)

App.class.php 1 <?php 2 namespace System\Core; 3 use System\Driver; 4 5 class App{ 6 public $DB; 7 public $Cache; 8 public $Session; 9 public $Controller; 10 11 public function __construct(){ 12 DBUG ? set_error_handler(array($this,'errorHandler')) :

Exphp代码走读(三)

Controller 类 1 <?php 2 namespace System\Core 3 4 5 class Controller { 6 public $Cache; 7 public $Session; 8 public $View; 9 10 private $_requestName; 11 private $_requestMethod; 12 13 public function __construct(){ 14 $this->safescan(); 15 16 Global

Qt Creator插件工作流程代码走读

Qt Creator有个很风骚的插件管理器PluginManager,还有个很骚包的插件说明PluginSpec.基本上,所有的Qt程序的入口都是传统的C程序一样,代码流程从main()函数开始.  在main()中,先初始化用于国际化的translator,然后获取程序配置settings,接着就在栈上创建了PluginManager对象,之后为PluginManager设置搜索用的文件扩展名pluginspec,设置配置,再设置插件搜索路径.  设置好插件搜索路径后,PluginManage

开源ext2read代码走读之--“\\\\.\\PhysicalDrive0”意义?

在ext2read中读取ext4文件系统的代码中,读取硬盘中的信息时,定义了以下的宏,那么这个宏是什么意思呢? #define DEVICE    "\\\\.\\PhysicalDrive0"是什么意思? 由于"\"是C/C+中转义符, "\\\\.\\"就相当于\\.\,那么以上的宏定义中的"\\\.\\PhysicalDrive0"就等价于"\\.\PhysicalDrive0" 在Windows中

WebRTCDemo.apk代码走读(三):音频接收流程

收到音频包 UdpSocketManagerPosixImpl::Run UdpSocketManagerPosixImpl::Process UdpSocketPosix::HasIncoming(recvfrom) UdpTransportImpl::IncomingRTPCallback UdpTransportImpl::IncomingRTPFunction VoiceChannelTransport::IncomingRTPPacket VoENetworkImpl::Receive

代码走读

本文转载自:http://blog.csdn.net/marchbirdcode/article/details/4801978 如需看原文,请看上面的链接. 从种种渠道可以知道,Google的代码之所以优秀,原因很简单,他们非常重视代码审查.这个方法不是Google独有的,它被公认是一个提高代码质量的手段.在Google,任何产品或者项目代码在捡入仓库之前,都需要进行有效的审查. 每个人,如果有意愿的话,都要参加代码审查,它是软件开发环节中非常重要而且通用的规则.审查代码,不需要投入很多精力,

WebRTC代码走读(八):代码文件夹结构

转载注明出处http://blog.csdn.net/wanghorse ├── ./base //基础平台库,包含线程.锁.socket等 ├── ./build //编译脚本.gyp ├── ./common_audio //基础公共的音频处理 │ ├── ./common_audio/include //就一个类型转换头文件 │ ├── ./common_audio/resampler //音频重採样代码 │ ├── ./common_audio/signal_processing //音

开源ext2read代码走读之-如何读取MBR分区的内容

主引导记录(Master Boot Record,缩写:MBR),又叫做主引导扇区,是计算机开机后访问硬盘时所必须要读取的首个扇区,它在硬盘上的三维地址为(柱面,磁头,扇区)=(0,0,1).在深入讨论主引导扇区内部结构的时候,有时也将其开头的446字节内容特指为"主引导记录"(MBR),其后是4个16字节的"磁盘分区表"(DPT),以及2字节的结束标志(55AA).因此,在使用"主引导记录"(MBR)这个术语的时候,需要根据具体情况判断其到底是

EventBus框架库代码走读

PS一句:最终还是选择CSDN来整理发表这几年的知识点,该文章平行迁移到CSDN.因为CSDN也支持MarkDown语法了,牛逼啊! [工匠若水 http://blog.csdn.net/yanbober] 本篇继续接上一篇,阅读上一篇EventBus使用之基础 背景 开始分析EventBus前可以下看下EventBus开源框架的工程目录结构: 从上图可以发现,其实EventBus的代码量不是很大,还是很方便入手分析的. 开始分析 通过上一篇基础使用可以发现,使用EventBus框架第一步是得到