MCurl.php 2.4 KB
<?php
namespace util;

/**
 * 请求类
 * Class MCurl
 * @package util
 *
 * 例如:
 * $data = MCurl::instance($url)->get();
 */
class MCurl
{
	/* curl资源对象 */
	private $ch;
    private static $curl;
    /**
     * 构造方法
     * @param string $url 请求的地址
     * @param int $responseHeader 是否需要响应头信息
     */
    public function __construct($url, $responseHeader = 0) {
        $this->ch = curl_init($url);
		// 设置以文件流的形式返回
        curl_setopt($this->ch, CURLOPT_RETURNTRANSFER, 1);
		// 设置响应头信息是否返回
        curl_setopt($this->ch, CURLOPT_HEADER, $responseHeader);
    }

    /**
     * @param $url
     * Description: 返回当前对象
     */
    public static function instance($url, $responseHeader = 0) {
        return new MCurl($url, $responseHeader);
    }
    /**
     * 添加请求头
     * @param string $charset 格式
     */
    public function addHeaderIsJson($charset = 'utf-8') {
        curl_setopt($this->ch, CURLOPT_HTTPHEADER, ['Content-type: application/json;charset=' . $charset]);
        return self::$curl;
    }
    /**
     * 析构方法
     */
    public function __destruct() {
        $this->close();
    }

    /**
     * 添加请求头
     * @param array $value 请求头
     */
    public function addHeader($value) {
        curl_setopt($this->ch, CURLOPT_HTTPHEADER, $value);
    }

    /**
     * 发送请求
     * @return string 返回的数据
     */
    private function exec() {
        return curl_exec($this->ch);
    }

    /**
     * 发送get请求
     * @return string 请求返回的数据
     */
    public function get($https = true) {
		if ($https) {
			curl_setopt($this->ch, CURLOPT_SSL_VERIFYPEER, false);
		}
        return $this->exec();
    }

    /**
     * 发送post请求
     * @param  arr/string $value 准备发送post的数据
     * @param boolean $https 是否为https请求
     * @return string        请求返回的数据
     */
    public function post($value, $https = true) {
        if ($https) {
            curl_setopt($this->ch, CURLOPT_SSL_VERIFYPEER, FALSE);
            curl_setopt($this->ch, CURLOPT_SSL_VERIFYHOST, FALSE);
        }
		// 设置post请求
        curl_setopt($this->ch, CURLOPT_POST, 1);
        curl_setopt($this->ch, CURLOPT_POSTFIELDS, $value);
        return $this->exec();
    }

    /**
     * 关闭curl句柄
     */
    private function close() {
        curl_close($this->ch);
    }
}