<?php
namespace app\common\wework\api;
class Curl
{
    /**
     *curl post请求
     * @param $url
     * @param null $header
     * @param null $data
     * @param bool $isHeader
     * @return mixed
     */
    public static function post($url, $header = null, $data = null, $isHeader = false)
    {
        return self::curl('post', $url, $header, $data, $isHeader);
    }

    /**
     *curl put请求
     * @param $url
     * @param null $header
     * @param null $data
     * @param bool $isHeader
     * @return mixed
     * @return bool|string
     */
    public static function put($url, $header = null, $data = null, $isHeader = false)
    {
        return self::curl('put', $url, $header, $data, $isHeader);
    }

    /**
     *curl get请求
     * @param $url
     * @param null $header
     * @param null $data
     * @param bool $isHeader
     * @return mixed
     */
    public static function get($url, $header = null, $data = null, $isHeader = false)
    {
        if ($data) {
            if (is_array($data)) {
                $data = http_build_query($data);
            }
            if (strpos($url, '?') === false) {
                $url = $url . '?' . $data;
            } else {
                $url = $url . '&' . $data;
            }
        }
        return self::curl('get', $url, $header, null, $isHeader);
    }

    /**
     *curl请求
     * @param $method
     * @param $url
     * @param null $header
     * @param null $data
     * @param bool $isHeader
     * @return mixed
     */
    public static function curl($method, $url, $header = null, $data = null, $isHeader = false)
    {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        if ($header) {
            curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
        }
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        //curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
        if (stripos($url, "https://") !== FALSE) {
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
        }

        if ($data) {
            if (is_array($data)) {
                $sets = array();
                foreach ($data as $key => $val) {
                    $sets[] = $key . '=' . urlencode($val);
                }
                $data = implode('&', $sets);
            }
            curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        }

        $method = strtolower($method);
        if ('post' == $method) {
            curl_setopt($ch, CURLOPT_POST, true);
        } elseif ('put' == $method) {
            //curl_setopt($ch,CURLOPT_PUT,true);
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
        }
//        curl_setopt($ch, CURLOPT_PROXY, "socks5://127.0.0.1:18080");

        //获取头部信息
        if ($isHeader) {
            curl_setopt($ch, CURLOPT_HEADER, 1);
        }

        $output = curl_exec($ch);
        if ($output === false) {
            var_dump(curl_error($ch));
        }
        curl_close($ch);
        return $output;
    }
}