php 第三方调用类。欢迎评论提意见

<?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;
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一名路过的小码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值