• api响应类


    接口开发响应类封装

    class response{    
        /*
        * 封通信接口数据
        * @param integer $code 状态码
        * @param string $message 状态信息
        * @param array $data 数据
        * return string 
        */
        public static function api_response($code, $message='', $data=array()){
                    //记录错误日志
                    if (1 !== $code) {
                            $logger = new logger();
                            $logger->conf['log_file'] = _LOG_DIR_ . 'api_error' . '.log';
                            $logger->log(array(substr(getIp(), 0, 15), '['.date("Y-m-d H:i:s").']',        'code: '.$code, 'message: '.$message));
                    }
            
                    $type = isset($_REQUEST['format'])?$_REQUEST['format']:'';
            switch ($type) {
                case 'json':
                    self::json_response($code, $message, $data);
                    break;
                case 'xml':
                    self::xml_response($code, $message, $data);
                    break;
                case 'array':
                    self::array_response($code, $message, $data);
                    break;
                default:
                    self::json_response($code, $message, $data);
                    break;
            }
        }
    
        /*
        * 封装数为json数据类型
        * @param integer $code 状态码
        * @param string $message 状态信息
        * @param array $data 数据
        * return string 
        */
        public static function json_response($code, $message='', $data=array()){
            $result = self::grant_array($code, $message, $data);
            echo json_encode($result);
            exit;
        }
    
        /*
        * 封装数为xml数据类型
        * @param integer $code 状态码
        * @param string $message 状态信息
        * @param array $data 数据
        * return string 
        */
        public static function xml_response($code, $message='', $data=array()){
            $result = self::grant_array($code, $message, $data);
    
            header("Content-Type:text/xml");
            $xml = "<?xml version='1.0' encoding='UTF-8'?>".PHP_EOL;
            $xml .= "<root>".PHP_EOL;
            $xml .= self::xml_encode($result);
            $xml .= "</root>";
            echo $xml;
            exit;
        }
            
            /*
        * 封装数为array数据类型
        * @param integer $code 状态码
        * @param string $message 状态信息
        * @param array $data 数据
        * return string 
        */
            public static function array_response($code, $message='', $data=array()){
                    $result = self::grant_array($code, $message, $data);
                    echo var_export($result, true);
                    exit;
            }
    
        /*
        * 将数组转换为XML格式
        * @param array $array 数组
        * return string 
        */
        private static function xml_encode($array=array()){
            $xml = $attr = "";
    
            if(!empty($array)){
                foreach ($array as $key => $value) {
                    if(is_numeric($key)){
                        $attr = " id='{$key}'";
                        $key = "item";
                    }
                    $xml .= "<{$key}{$attr}>" ;
                    $xml .= is_array($value) ? self::xml_encode($value) : $value;
                    $xml .="</{$key}>".PHP_EOL;
                }
            }
            return $xml;
        }
    
        /*
        * 按照接口格式生成原数据数组
        * @param integer $code 状态码
        * @param string $message 状态信息
        * @param array $data 数据
        * return array 
        */
        private static function grant_array($code, $message='', $data=array()){
            if(!is_numeric($code)){
                return '';
            }
                    $data['date'] = date('Y-m-d H:i:s');
            $result = array(
                'code' => $code,
                'message' => $message,
                'data' => $data
            );
    
            return $result;
        }
    }

    日志类封装

    class logger
    {
            /**
             * 配置
             */
            public $conf = array(
                    'log_file' => '',        
                    'separator' => ' ',
            );
    
            /**
             * 文件句柄
             */
            private $fileHandler;
    
            /**
             * 获得文件句柄
             * @return resource fileHandler
             */
            protected function getFileHandler()
            {
                    if (null === $this->fileHandler)
                    {
                            if (empty($this->conf['log_file']))        
                            {
                                    trigger_error('no log file spcified');
                            }
                            $logDir = dirname($this->conf['log_file']);
                            if (!is_dir($logDir))
                            {
                                    mkdir($logDir, 0777, true);
                            }
                            $this->fileHandler = fopen($this->conf['log_file'], 'a');
                    }
                    return $this->fileHandler;
            }
    
            /**
             * 记录日志
             * @param mixed $logData
             */
            public function log($logData)
            {
                    if ('' == $logData || array() == $logData)
                    {
                            return false;
                    }
                    if (is_array($logData))
                    {
                            $logData = implode($this->conf["separator"], $logData);
                    }
                    $logData = $logData. "
    ";
                    fwrite($this->getFileHandler(), $logData);
                    fclose($this->getFileHandler());
            }
    }

    来自:http://bbs.php-z.com/thread-3101-1-1.html

  • 相关阅读:
    LeetCode 82,考察你的基本功,在有序链表中删除重复元素II
    golang | Go语言入门教程——结构体初始化与继承
    pandas | 使用pandas进行数据处理——DataFrame篇
    博弈论 | 详解搞定组合博弈问题的SG函数
    PCA算法 | 数据集特征数量太多怎么办?用这个算法对它降维打击!
    Python | 面试必问,线程与进程的区别,Python中如何创建多线程?
    Pytorch | 详解Pytorch科学计算包——Tensor
    通过Windows Visual Studio远程调试WSL2中的.NET Core Linux应用程序
    MSIL入门(二)通过对象看IL
    MSIL入门(一)C#代码与IL代码对比
  • 原文地址:https://www.cnblogs.com/yhdsir/p/5536544.html
Copyright © 2020-2023  润新知