您好,登錄后才能下訂單哦!
<?php
class PostCurl extends AbstractCurl {
/**
* 調用父構造方法
*
*/
public function __construct() {
parent::__construct();
}
/**
* 實現cURL主體的抽象方法
*
* @param array $para
*
* @return void
*/
protected function _cUrl($para = array()) {
curl_setopt($this->_ch, CURLOPT_POST, true);
curl_setopt($this->_ch, CURLOPT_POSTFIELDS, $para['data']);
}
}
/**
* cURL抽象類
*
*/
/**
* cURL抽象類
*
*/
abstract class AbstractCurl {
/**
* cURL資源
*
* @var resource
*/
protected $_ch = null;
/**
* URL地址
*
* @var string
*/
protected $_url = '';
/**
* 是否啟用SSL模式
*
* @var boolean
*/
protected $_ssl = false;
/**
* 初始化cURL資源
*
*/
protected function __construct() {
$this->_ch = curl_init();
}
/**
* cURL抽象方法,處理POST、GET、PUT(暫不提供)
*
* @param array $para
*/
abstract protected function _cUrl($para = array());
/**
* 發送socket連接
*
* @param string $url
* @param array $para
* @param boolean $return
*
* @return mix [void|string]
*/
private function _socket($url, $para, $return) {
$this->_setUrl($url);
/*
* 強制轉換為boolean類型,這里不使用(boolean)與settype
*/
if (false === isset($para['header'])) {
$para['header'] = false;
} else {
$para['header'] = true;
}
curl_setopt($this->_ch, CURLOPT_HEADER, $para['header']);
curl_setopt($this->_ch, CURLOPT_TIMEOUT, 10);
/*
* 處理302
*/
if (false === isset($para['location'])) {
$para['location'] = false;
} else {
$para['location'] = true;
}
curl_setopt($this->_ch, CURLOPT_FOLLOWLOCATION, $para['location']);
unset($para['location']);
if(!empty($para['cookieFile'])){
if (false === isset($para['cookieFile'])) {
curl_setopt($this->_ch, CURLOPT_COOKIEFILE, $para['cookieFile'][0]);
curl_setopt($this->_ch, CURLOPT_COOKIEJAR, $para['cookieFile'][0]);
}
}
/*
* exec執行結果是否保存到變量中
*/
if (true === $return) {
curl_setopt($this->_ch, CURLOPT_RETURNTRANSFER, true);
}
/*
* 是否啟用SSL驗證
*/
if (true === $this->_ssl) {
curl_setopt($this->_ch, CURLOPT_SSL_VERIFYHOST, true);
}
/*
* 調用子類處理方法
*/
$this->_cUrl($para);
$result = curl_exec($this->_ch);
$apiStatus = curl_getinfo($this->_ch);
if(isset($apiStatus['http_code']) && 200 == $apiStatus['http_code']) {
if (true === $return) {
curl_close($this->_ch);
return $result;
}
} elseif(isset($apiStatus['http_code']) && 404 == $apiStatus['http_code']) {
curl_close($this->_ch);
return false;
} else {
curl_close($this->_ch);
return false;
}
}
/**
* 初始化URL
*
* @param string $url
*
* @return boolean [true成功 | false失敗]
*/
private function _setUrl($url) {
$this->_url = $url;
/*
* 以下代碼在PHP > 5.3有效
*/
if (false !== strstr($this->_url, 'https://', true)) {
$this->_ssl = true;
}
return curl_setopt($this->_ch, CURLOPT_URL, $this->_url);
}
/**************************公共接口***********************/
/**
* 發起通信請求接口
*
* @param string $url
* @param array $para
* @param boolean $return
*
* @return string
*/
final public function socket($url, $para = array(), $return = true) {
if(!empty($this->_ch)){
$this->_ch = curl_init();
}
return $this->_socket($url, $para, $return);
}
}
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。