ini.php文件简析

<?php
if(!defined(‘COREINC‘)) exit(‘Request Error!‘);
    //统一配置文件,优先使用自定义配置,未定义的使用默认配置
    defined("CORE_PATH")    or define("CORE_PATH", "./core/"); //框架核心路径
    defined("APP_PATH")     or define("APP_PATH","./app/");//项目路径
    defined(‘MODEL_PATH‘)   or define("MODEL_PATH",APP_PATH.‘models/‘);
    defined(‘STATIC_PATH‘)  or define(‘STATIC_PATH‘,APP_PATH.‘statics/‘);
    defined("UP_PATH")      or define(‘UP_PATH‘, APP_PATH.‘upload/‘);
    defined("PLUGIN_PATH")  or define("PLUGIN_PATH", APP_PATH.‘plugin/‘);
    //字符编码
    defined("CHARSET") or define(‘CHARSET‘,‘utf-8‘);
    // 定义当前请求的系统常量
    define(‘NOW_TIME‘,      $_SERVER[‘REQUEST_TIME‘]);
    define(‘REQUEST_METHOD‘,$_SERVER[‘REQUEST_METHOD‘]);
    define(‘IS_GET‘,        REQUEST_METHOD ==‘GET‘ ? true : false);
    define(‘IS_POST‘,       REQUEST_METHOD ==‘POST‘ ? true : false);
    define(‘IS_PUT‘,        REQUEST_METHOD ==‘PUT‘ ? true : false);
    define(‘IS_DELETE‘,     REQUEST_METHOD ==‘DELETE‘ ? true : false);
    define(‘IS_AJAX‘,       ((isset($_SERVER[‘HTTP_X_REQUESTED_WITH‘]) && strtolower($_SERVER[‘HTTP_X_REQUESTED_WITH‘]) == ‘xmlhttprequest‘)) ? true : false);
    //设置include_path
    set_include_path(get_include_path() . PATH_SEPARATOR . CORE_PATH."main");
    initializer::initialize();//加载将要用到的目录文件
    require_once(CORE_PATH."functions/global.fun.php");//公用方法
    require_once(APP_PATH.‘config/config.php‘);//自定义配置文件
    require_once(CORE_PATH."config/config.php");//默认配置文件
    $common_fun_path = APP_PATH.‘common/common.php‘;
    if(file_exists($common_fun_path)){
        require_once($common_fun_path);
    }
    //自动加载类
    function __autoload($object){
            require_once("{$object}.class.php");
    }
?>
defined("CORE_PATH")    or define("CORE_PATH", "./core/"); //框架核心路径

框架默认核心路径,如果入口文件不配置,就默认该配置

defined("APP_PATH")     or define("APP_PATH","./app/");//项目路径

项目默认路径,如果入口文件不配置,就默认该配置

defined(‘MODEL_PATH‘)   or define("MODEL_PATH",APP_PATH.‘models/‘);
defined(‘STATIC_PATH‘)  or define(‘STATIC_PATH‘,APP_PATH.‘statics/‘);
defined("UP_PATH")      or define(‘UP_PATH‘, APP_PATH.‘upload/‘);
defined("PLUGIN_PATH")  or define("PLUGIN_PATH", APP_PATH.‘plugin/‘);

分别为 模型路径,静态文件路径,上传路径,差距路径的默认配置,一般可以在config.php文件中配置,如果不配置,就默认该配置

defined("CHARSET") or define(‘CHARSET‘,‘utf-8‘);

配置字符编码,再global.fun.php中有函数str_cut用得到,下面是字符串截取函数str_cut得代码

function str_cut($string, $length, $dot = ‘‘) {
        $strlen = strlen($string);
        if($strlen/2 <= $length) return $string;
        $string = str_replace(array(‘ ‘,‘        ‘,‘ ‘,‘ ‘, ‘&‘, ‘"‘, ‘\‘‘, ‘“‘, ‘”‘, ‘—‘, ‘<‘, ‘>‘, ‘·‘, ‘…‘), array(‘ ‘,‘ ‘,‘ ‘,‘ ‘, ‘&‘, ‘"‘, "‘", ‘“‘, ‘”‘, ‘—‘, ‘<‘, ‘>‘, ‘·‘, ‘…‘), $string);
        $strcut = ‘‘;
        $n = $tn = $noc = 0;
        if(strtolower(CHARSET) == ‘utf-8‘) {
                while($n < $strlen) {
                        $t = ord($string[$n]);
                        if($t == 9 || $t == 10 || (32 <= $t && $t <= 126)) {
                                $tn = 1; ++$n; $noc += 0.5;
                        } elseif(194 <= $t && $t <= 223) {
                                $tn = 2; $n += 2; $noc += 1;
                        } elseif(224 <= $t && $t <= 239) {
                                $tn = 3; $n += 3; $noc += 1;
                        } elseif(240 <= $t && $t <= 247) {
                                $tn = 4; $n += 4; $noc += 1;
                        } elseif(248 <= $t && $t <= 251) {
                                $tn = 5; $n += 5; $noc += 1;
                        } elseif($t == 252 || $t == 253) {
                                $tn = 6; $n += 6; $noc += 1;
                        } else {
                                ++$n;
                        }
                        if($noc >= $length) {
                                if($n < $strlen) ++$noc;
                                break;
                        }
                }
        } else {
                while($n < $strlen) {
                        if(ord($string[$n]) > 127) {
                                $tn = 2; $n += 2; $noc += 1;
                        } else{
                                $tn = 1; ++$n; $noc += 0.5;
                        }
                        if($noc >= $length) {
                                if($n < $strlen) ++$noc;
                                break;
                        }
                }
        }
        if($noc > $length && !empty($dot)) {
                $n -= $tn;
                $strcut = substr($string, 0, $n);
                $strcut .= $dot;
        }else{
                $strcut = substr($string, 0, $n);
        }
        $strcut = str_replace(array(‘&‘, ‘"‘, "‘", ‘“‘, ‘”‘, ‘—‘, ‘<‘, ‘>‘, ‘·‘, ‘…‘), array(‘&‘, ‘"‘, ‘\‘‘, ‘“‘, ‘”‘, ‘—‘, ‘<‘, ‘>‘, ‘·‘, ‘…‘), $strcut);
        return $strcut;
}

下面定义的常量,用于判断请求类型

 // 定义当前请求的系统常量
    define(‘NOW_TIME‘,      $_SERVER[‘REQUEST_TIME‘]);
    define(‘REQUEST_METHOD‘,$_SERVER[‘REQUEST_METHOD‘]);
    define(‘IS_GET‘,        REQUEST_METHOD ==‘GET‘ ? true : false);
    define(‘IS_POST‘,       REQUEST_METHOD ==‘POST‘ ? true : false);
    define(‘IS_PUT‘,        REQUEST_METHOD ==‘PUT‘ ? true : false);
    define(‘IS_DELETE‘,     REQUEST_METHOD ==‘DELETE‘ ? true : false);
    define(‘IS_AJAX‘,       ((isset($_SERVER[‘HTTP_X_REQUESTED_WITH‘]) && strtolower($_SERVER[‘HTTP_X_REQUESTED_WITH‘]) == ‘xmlhttprequest‘)) ? true : false);

设置include_path

//设置include_path
set_include_path(get_include_path() . PATH_SEPARATOR . CORE_PATH."main");

自动加载

//自动加载类
    function __autoload($object){
            require_once("{$object}.class.php");
    }

该函数的工作原理如下:

http://www.cnblogs.com/bourneli/archive/2012/09/08/2676965.html

initializer::initialize();//加载将要用到的目录文件

自动加载类,

<?php
if(!defined(‘COREINC‘)) exit(‘Request Error!‘);
class initializer{
    public static function initialize()    {
        //set_include_path(get_include_path().PATH_SEPARATOR.CORE_PATH."main");
        set_include_path(get_include_path().PATH_SEPARATOR.CORE_PATH."helpers");
        set_include_path(get_include_path().PATH_SEPARATOR.CORE_PATH."libraries");
        set_include_path(get_include_path().PATH_SEPARATOR.CORE_PATH."config");
        set_include_path(get_include_path().PATH_SEPARATOR.APP_PATH."controllers");
        set_include_path(get_include_path().PATH_SEPARATOR.APP_PATH."models");
        set_include_path(get_include_path().PATH_SEPARATOR.APP_PATH."views");
        set_include_path(get_include_path().PATH_SEPARATOR.APP_PATH."config");
        set_include_path(get_include_path().PATH_SEPARATOR.APP_PATH."plugin");
    }
}?>

该静态方式调用,设置了一些要用到的include_path

require_once(CORE_PATH."functions/global.fun.php");//公用方法
require_once(APP_PATH.‘config/config.php‘);//自定义配置文件
require_once(CORE_PATH."config/config.php");//默认配置文件
$common_fun_path = APP_PATH.‘common/common.php‘;
if(file_exists($common_fun_path)){
    require_once($common_fun_path);
}

加载公用方法,公用(默认)配置文件,项目配置文件以及项目common.php(如果存在该文件)

附:core框架核心目录一览

项目文件目录一览

ini.php文件简析

时间: 2024-08-01 23:42:22

ini.php文件简析的相关文章

框架目录一览以及入口文件简析

core是框架核心部分,home和admin分别是两个应用 本框架是单点入口,home的入口文件是index.php,admin的入口文件是adsranadmin.php index.php代码如下 <?php define("COREINC",true);//单一入口 define("CORE_PATH", "./core/"); //框架核心路径 define("APP_PATH","./home/&quo

PostgreSQL的 pg_hba.conf 文件简析

最近试用PostgreSQL 9.04,将pg_hba.conf配置的一些心得分享. pg_hba.conf是客户端认证配置文件,定义如何认证客户端. 下面是常用的pg_hba.conf配置: 1 2 3 4 5 6 7 8 9 10 # TYPE  DATABASE  USER  CIDR-ADDRESS  METHOD   # "local" is for Unix domain socket connections only local    all      all      

Linux中 /proc/[pid] 目录各文件简析

Linux 内核提供了一种通过 proc 文件系统,在运行时访问内核内部数据结构.改变内核设置的机制.proc 文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间.它以文件系统的方式为访问系统内核数据的操作提供接口. 用户和应用程序可以通过 proc 得到系统的信息,并可以改变内核的某些参数.由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取 proc 文件时,proc 文件系统是动态从系统内核读出所需信息并提交的. 下面列出的这些文件或子文件夹,并不是都是在你的系统中存在,

PostgreSQL pg_hba.conf 文件简析

作者:高张远瞩(HiLoveS) 博客:http://www.cnblogs.com/hiloves/ 转载请保留该信息 最近试用PostgreSQL 9.04,将pg_hba.conf配置的一些心得分享.pg_hba.conf是客户端认证配置文件,定义如何认证客户端. 下面是常用的pg_hba.conf配置: 1 2 3 4 5 6 7 8 9 10 # TYPE  DATABASE  USER  CIDR-ADDRESS  METHOD # "local" is for Unix

Linux中/etc/resolv.conf文件简析

/etc/resolv.conf是DNS客户机配置文件,用于设置DNS服务器的IP地址及DNS域名,还包含了主机的域名搜索顺序. 该文件是由域名解析 器(resolver,一个根据主机名解析IP地址的库)使用的配置文件.它的格式很简单,每行以一个关键字开头,后接一个或多个由空格隔开的参数. 以下是我打开/etc/resolv.conf所得的内容: [[email protected] ~]# cat /etc/resolv.conf //查看该文件中的内容 # Generated by Netw

hello-jni Android.mk文件简析

#删除旧变量 LOCAL_PATH := $(call my-dir) #返回当前目录 include $(CLEAR_VARS) #删除旧变量 #设置新变量 LOCAL_MODULE := hello-jni #模块名(不允许有空格)LOCAL_SRC_FILES := hello-jni.c #源文件地址 #调用编译函数 include $(BUILD_SHARED_LIBRARY)

借助LANMT构架,简析ngnix的使用

LNMP流程图 nginx PHP Mysql Nginx Fastcgi_pass <-FastCGI-> fastcgi-(php-fpm)<->wrapper Php 解析器 (Php.ini) <->mysql fastcgi-(php-fpm)<->wrapper fastcgi-(php-fpm)<->wrapper fastcgi-(php-fpm)<->wrapper fastcgi-(php-fpm)<->

web应用构架LAMT及tomcat负载简析

Httpd    (mod_jk.so) workers.properties文件 uriworkermap.properties文件 <--AJP1.3--> Tomcat  --> jdk 大致流程:apache服务器通过mod_jk.so 模块处理jsp文件的动态请求.通过tomcat worker等待执行servlet/JSP的tomcat实例.使用 AJP1.3协议与tomcat通信.tomcat有借助jdk解析. 负载就是 多台tomcat.共同解析apache发送的jsp请

Java Annotation 及几个常用开源项目注解原理简析

PDF 版: Java Annotation.pdf, PPT 版:Java Annotation.pptx, Keynote 版:Java Annotation.key 一.Annotation 示例 Override Annotation Java 1 2 3 @Override public void onCreate(Bundle savedInstanceState); Retrofit Annotation Java 1 2 3 @GET("/users/{username}&quo