<?php
namespace imcat;

// 基础API类

class vopApi{

    
// [], 'die', $msg
    // [], 'dir', $url
    // $data, ''
    
static function v($data$type=''$msg=''){
        if(
$type=='dir'){
            
$msg preg_match("/[^\w\-\.]+/i"$msg) ? $msg surl($msg);
        }
        if(
$type=='die'){
            
//
        
}
        
$retype req('retype'); // retype
        
if($retype || $type=='api'){ // type=api, re=json|jsonp
            
$alp '*'glbHtml::dallow($alp);
            if(isset(
$data['vars'])){
                
$vars $data['vars']; unset($data['vars']);
                
$_sys $data;
                
$data $vars + ['_sys'=>$_sys'_msg'=>$msg];
            }
            
self::view($data);
        }elseif(
$type){ // dir, die
            
if($type=='dir'){ header('Location:'.$msg); }
            if(
$type=='die'){ $msg = empty($msg) ? $data['vars']['errmsg'] : $msg; }
            die(
$msg);
        }else{ 
            return 
$data;
        }
    }

    
// 显示
    
static function view($data=array(), $die=1){ // die-不用了
        
if(empty($data['errno'])){ $data['errno'] = 0; }
        if(empty(
$data['errmsg'])){ $data['errmsg'] = ''; }
        
$re req('retype''json');
        
$debug req('debug');
        if(
$debug){
            
dump($data);
        }else{
            
$res basOut::fmt($data$re);
            
header('content-type:application/json');
            echo 
$res;
        }
        if(!
defined('ERR_NODIE')){
            die(); 
// ??? 
        
}
    }

    
// 快捷显示错误 - vopSapi使用
    
static function verr($msg=''$code=0){
        
self::error($msg$code);
    }

    
// 错误提示(小程序) - vopSapi使用
    
static function error($msg=''$code=0){
        
$msg = empty($msg) ? 'Error Message!' $msg;
        
$res['ercode'] = $code $code 1;
        
$res['ermsg'] = $msg;
        
$res['ref'] = basEnv::serval('ref''?');
        if(
$code==518){ // 518自定义特殊错误码(小程序中使用)
            
$erhead "518 {$res['errno']}:{$res['errmsg']}";
            
header("HTTP/1.1 $erhead"); 
            
header("Status: $erhead"); // 确保FastCGI模式下正常
        
}elseif($code>200){
            
glbHtml::httpStatus($code);
        }
        
self::view($res);
    }

    
// 错误提示(兼容tp:zdcm)
    
static function errEnd($ek$tip=''$msg=''){
        
glbError::show($ek$tip$msg);
    }

}

/*

*/