<?php
/**
* lianggc 2016-04-22
* 主要用于 第三方接口调用
*/
class Api {
static private $obj=NULL;
public $parameter;
/**
* [__construct description] 第一次声明对象 obj 进行初始化操作。
* @author lianggc 2016-04-22
* @param array $parameter [description] 参数
*/
private function __construct($parameter=array()){
if (!class_exists(__CLASS__, FALSE)) {
throw new Exception('Class "'.__CLASS__.'" is required');
}
$this->setInit($parameter);
}
/**
* [init description] 单例模式的入口
* @author lianggc 2016-04-22
* @param array $parameter [description] 参数
* @return [type] [description] 当前class obj
*/
public static function init($parameter=array()){
if(!self::$obj instanceof self){
self::$obj =new self($parameter);
}else{
self::$obj->setInit($parameter);
}
return self::$obj;
}
/**
* [setInit description] 初始化参数
* @author lianggc 2016-04-13
* @param [type] $parameter [description] 参数
*/
private function setInit($parameter){
$this->parameter= $parameter;
}
/**
* [SendData description] 发送数据
* @author lianggc 2016-04-22
* @param string $server_url [description] 发送url
* @param array $data [description] 要发送的数据
* @param string $type [description] 要发送的类型
*/
public function sendData($server_url='',$data=array(),$type='get'){
if(empty($server_url)||empty($data)){
return '';
}
if('get'==$type){
return $this->sendGet($server_url,$data);
}else{
return $this->sendPost($server_url,$data);
}
}
/**
* [sendGet description] get方式发送
* @author lianggc 2016-04-22
* @param string $url [description] 发送url
* @param array $data [description] 发送数据
* @return [type] [description]
*/
private function sendGet($url='',$data=array()){
$url_data='';
switch (gettype($data)) {
case 'array':
$url_data=http_build_query($data);
break;
case 'string':
$url_data=ltrim($data,'?');
break;
default:
return '';
}
$url.='?'.$url_data;
return $this->curl($url);
}
/**
* [sendPost description] 设置post
* @author lianggc 2016-04-22
* @param string $url [description] 发送url
* @param array $data [description] 发送数据
* @return [type] [description]
*/
private function sendPost($url='',$data=array()){
if(!is_array($data)){
return '';
}else{//二维数组传递情况
$send_data=http_build_query($data);
}
return $this->curl($url,$send_data,'post');
}
/**
* [curl description] curl 发送数据
* @author lianggc 2016-04-25
* @param string $url [description] 要发送的url
* @param array $data [description] 要发送的数据
* @param string $type [description] 要发送的类型
* @return [type] [description] 请求的数据
*/
private function curl($url='',$data=array(),$type='get'){
$type_array=array('post','get');
if(!in_array($type, $type_array)){//目前只支持 post get 方式进行调用
return '';
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
if($type=='post'){//如果是post方式请求
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
}
curl_setopt($ch, CURLOPT_TIMEOUT, 10);//curl最大请求时间10s 以防程序卡死
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
$return_data = curl_exec($ch);
curl_close($ch);
return $return_data;
}
/**
* [jsonChangeArray description] json 格式 转数组
* @author lianggc 2016-04-26
* @param string $json [description] json 字符串
* @return [type] [description] json 转换后数组
*/
public function jsonChangeArray($json=''){
if(empty($json)){
return array();
}
$return = json_decode($json,true);
if(is_null($return)){
return array();
}
return $return;
}
}
php 第三方调用类。欢迎评论提意见
最新推荐文章于 2021-04-15 23:28:47 发布