我的接口框架---框架函数文件common.php

<?php defined('JDHU') OR die('no allow access');

/**
 * 加载配置文件
 */
function &get_config($replace = array())
{
    static $config;

    if (empty($config)) {
        $file_path = APPPATH . 'config/config.php';
        //如果不存存在正式配置,加载环境配置
        if (!file_exists($file_path)) {
            $file_path = APPPATH . 'config/'.ENVIRONMENT.'config.php';
        }
        require($file_path);
    }

    //替换配置文件中
    foreach ($replace as $key => $value) {
        $config[$key] = $value;
    }

    return $config;
}

/**
 * 加载框架/应用类库
 */
function &load_class($class, $directory = 'libraries', $param = NULL)
{
    static $_classes = array();

    //如果类加载过了,返回类
    if (isset($_classes[$class])) {
        return $_classes[$class];
    }

    $name = FALSE;

    //引入核心类
    //首先查找应用,其次查找框架
    //覆盖框架类文件:如果应用存在JDHU类,则不引入框架类
    foreach (array(APPPATH, JDHU) as $path) {
        if (file_exists($path.$directory.'/'.$class.'.php')) {
            //核心类名
            $name = 'JDHU_'.$class;
            //备注:class_exists 第二个参数默认true,调用__autoload()函数
            if (class_exists($name, FALSE) === FALSE) {
                require_once($path.$directory.'/'.$class.'.php');
            }

            break;
        }
    }

    //引入继承类:继承框架类或覆盖类
    if (file_exists(APPPATH.$directory.'/'.config_item('subclass_prefix').$class.'.php')) {
        //继承类名
        $name = config_item('subclass_prefix').$class;
        require_once(APPPATH.$directory.'/'.$name.'.php');
    }

    //获取被加载的类,记录已被加载
    is_loaded($class);

    //如果有参数,则带参数初始化类
    $_classes[$class] = isset($param) ? new $name($param) : new $name();

    return $_classes[$class];
}

/**
 * 获取配置项
 */
function config_item($item)
{
    static $_config;

    if (empty($_config)) {
        
        // 引用不能直接赋值给静态变量,可以赋值给静态变量数组
        $_config[0] =& get_config();
    }

    return $_config[0][$item];
}

/**
 * 获取被加载的类,如果有类名,记录已被加载
 */
function &is_loaded($class='')
{
    static $_is_loaded = array();

    if ($class) {
        //类名
        $_is_loaded[strtolower($class)] = $class;
    }

    return $_is_loaded;
}

/**
 * 输出json错误并退出
 */
function die_error($message)
{
    static $_response;

    if ($_response === NULL) {
        $_response[0] =& load_class('Response', 'core');
    }
    log_message('error', $message);

    $_response[0]->die_error($message);
}

/**
 * 记录日志
 */
function log_message($level, $message)
{
    static $_log;

    if ($_log === NULL) {
        $_log[0] =& load_class('Log', 'core');
    }

    $_log[0]->write_log($level, $message);
}

/**
 * 获取ip地址
 */
function ip_address()
{
    static $_ip_address = '';

    if ($_ip_address) {
        return $_ip_address;
    }

    $_ip_address = $_SERVER('REMOTE_ADDR');

    return $_ip_address;
}

/**
 * 备注:function &xxx() 返回结果的指针地址
 */
 ?>
posted @ 2015-01-24 20:02  yo胡yo  阅读(440)  评论(0编辑  收藏  举报