<?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() 返回结果的指针地址
*/
?>

我的接口框架---框架函数文件common.php的更多相关文章

  1. 基于Java+HttpClient+TestNG的接口自动化测试框架(八)------ 针对文件的处理

    在实际的接口测试中,有时需要根据情况进行文件的上传和下载.在文件数量比较小的时候,我们当然可以直接处理(比如若干个接口都用一个文件).但是,如果我们上传的文件需要使用不同文件夹里不同的文件,而且数量又 ...

  2. 转载:python + requests实现的接口自动化框架详细教程

    转自https://my.oschina.net/u/3041656/blog/820023 摘要: python + requests实现的接口自动化框架详细教程 前段时间由于公司测试方向的转型,由 ...

  3. python+requests接口自动化测试框架实例详解教程

    1.首先,我们先来理一下思路. 正常的接口测试流程是什么? 脑海里的反应是不是这样的: 确定测试接口的工具 —> 配置需要的接口参数 —> 进行测试 —> 检查测试结果(有的需要数据 ...

  4. 【python3+request】python3+requests接口自动化测试框架实例详解教程

    转自:https://my.oschina.net/u/3041656/blog/820023 [python3+request]python3+requests接口自动化测试框架实例详解教程 前段时 ...

  5. python+requests接口自动化测试框架实例详解

    python+requests接口自动化测试框架实例详解   转自https://my.oschina.net/u/3041656/blog/820023 摘要: python + requests实 ...

  6. python + requests实现的接口自动化框架详细教程

    前段时间由于公司测试方向的转型,由原来的web页面功能测试转变成接口测试,之前大多都是手工进行,利用postman和jmeter进行的接口测试,后来,组内有人讲原先web自动化的测试框架移驾成接口的自 ...

  7. Android接口和框架学习

    Android接口和框架学习 缩写: HAL:HardwareAbstraction Layer.硬件抽象层 CTS:CompatibilityTest Suite,兼容性測试套件 Android让你 ...

  8. python+request+HTMLTestRunner+unittest接口自动化测试框架

    转自https://my.oschina.net/u/3041656/blog/820023 正在调研使用python进行自动化测试,在网上发现一篇比较好的博文,作者使用的是python3,但目前自己 ...

  9. 接口自动化测试框架-AIM2.0

    跳转到3.0版本https://www.cnblogs.com/df888/p/12031649.html AIM是我用python搭建的第一款接口自动化测试框架,随着技术的提升,框架也在升级,故有了 ...

随机推荐

  1. Yii 生成表单下拉选框及查询下拉选框

    CHtml类参考: http://www.yiichina.com/api/CHtml#activeDropDownList-detail activeDropDownList() 方法 public ...

  2. hdoj 3072 Intelligence System【求scc&&缩点】【求连通所有scc的最小花费】

    Intelligence System Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Othe ...

  3. zoj3329 One Person Game

    One Person Game Time Limit: 1 Second Memory Limit: 32768 KB Special Judge There is a very simple and ...

  4. JAVA基础英语单词表(中)

    factory                                 / 'fæktəri /                    工厂 fetch                     ...

  5. Python 库大全

    作者:Lingfeng Ai链接:http://www.zhihu.com/question/24590883/answer/92420471来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非 ...

  6. ASP.NET MVC- VIEW Creating Custom HTML Helpers Part 2

    The goal of this tutorial is to demonstrate how you can create custom HTML Helpers     that you can ...

  7. Servlet小知识点

    1. Sevlet是一个java类,供以其他程序调用,不能独立运行,需要Servlet引擎(Servlet容器)来管理和调度. 2. 服务器启动后,一般只会创建一个Servlet实例对象,init方法 ...

  8. 【转】YUV420P的格式以及转换为RGB565的代码(Android摄像头的输出一般为YUV420P)

    http://blog.csdn.net/daisyhd/article/details/38866809 static void cvt_420p_to_rgb565(int width, int  ...

  9. 01 if

    if - else     if语句是一种控制语句,执行一代码块,如果一个表达式计算为true if (expression)     statement1 else   statement2   如 ...

  10. 空格&amp;nbsp在不同浏览器中显示距离不一致问题解决方法

      在ie.firefox.chrome浏览器上显示的效果不太一样,主要是前面的空格宽度不同. 网上资料说不同的浏览器会有不同的默认字体.一般 IE默认字体都是宋体,而firefox和chrome的默 ...