mirror of
https://github.com/ledccn/IYUUPlus.git
synced 2024-09-20 15:15:29 +00:00
修改:对Curl的单例包装,可以使用静态方法调用
This commit is contained in:
parent
1689f610e2
commit
8ccdc23161
|
@ -2,14 +2,24 @@
|
|||
namespace app\common\components;
|
||||
|
||||
use app\common\Constant;
|
||||
use app\common\exception\BusinessException;
|
||||
use Curl\Curl as ICurl;
|
||||
|
||||
/**
|
||||
* 单例Curl
|
||||
* @access private 常驻内存运行,禁止执行器调用
|
||||
* 对Curl的单例包装,可以使用静态方法调用
|
||||
*/
|
||||
class Curl
|
||||
{
|
||||
/**
|
||||
* 数据流的类型(表单默认)
|
||||
*/
|
||||
const CONTENT_TYPE_DEFAULT = 'application/x-www-form-urlencoded; charset=UTF-8';
|
||||
|
||||
/**
|
||||
* 数据流的类型(JSON)
|
||||
*/
|
||||
const CONTENT_TYPE_JSON = 'application/json; charset=UTF-8';
|
||||
|
||||
/**
|
||||
* 单例
|
||||
* @var null | ICurl
|
||||
|
@ -40,10 +50,83 @@ class Curl
|
|||
}
|
||||
// 设置不检查证书
|
||||
self::$_instance->setOpt(CURLOPT_SSL_VERIFYPEER, false);
|
||||
#self::$_instance->setOpt(CURLOPT_SSL_VERIFYHOST, false);
|
||||
#self::$_instance->setOpt(CURLOPT_SSL_VERIFYHOST, 2);
|
||||
#self::$_instance->setOpt(CURLOPT_SSLVERSION, 1);
|
||||
|
||||
// 设置UserAgent
|
||||
self::$_instance->setUserAgent(Constant::UserAgent);
|
||||
return self::$_instance;
|
||||
}
|
||||
|
||||
/**
|
||||
* GET请求
|
||||
* @param string $url
|
||||
* @param array $data 数据
|
||||
* @param bool $reset 是否重置Curl(默认true)
|
||||
* @return ICurl
|
||||
*/
|
||||
public static function get($url, $data = array(), bool $reset = true): ICurl
|
||||
{
|
||||
return static::one($reset)->get($url, $data);
|
||||
}
|
||||
|
||||
/**
|
||||
* POST请求
|
||||
* @param string $url
|
||||
* @param array $data 数据
|
||||
* @param bool $asJson 是否Json
|
||||
* @param bool $reset 是否重置Curl(默认true)
|
||||
* @return ICurl
|
||||
*/
|
||||
public static function post($url, $data = array(), $asJson = false, bool $reset = true): ICurl
|
||||
{
|
||||
static::one($reset);
|
||||
if ($asJson) {
|
||||
self::$_instance->setHeader('Content-Type', static::CONTENT_TYPE_JSON);
|
||||
} else {
|
||||
self::$_instance->setHeader('Content-Type', static::CONTENT_TYPE_DEFAULT);
|
||||
}
|
||||
return self::$_instance->post($url, $data, $asJson);
|
||||
}
|
||||
|
||||
/**
|
||||
* 简易POST
|
||||
* @param string $url
|
||||
* @param $data
|
||||
* @return false|string
|
||||
*/
|
||||
public static function http_post(string $url, $data)
|
||||
{
|
||||
$opts = array(
|
||||
'http' => array(
|
||||
'method' => 'POST',
|
||||
'header' => 'Content-type: ' . static::CONTENT_TYPE_DEFAULT,
|
||||
'content' => http_build_query($data),
|
||||
'timeout' => 5
|
||||
),
|
||||
// 解决SSL证书验证失败的问题
|
||||
'ssl' => array(
|
||||
'verify_peer' => false,
|
||||
'verify_peer_name' => false,
|
||||
)
|
||||
);
|
||||
$context = stream_context_create($opts);
|
||||
return file_get_contents($url, false, $context);
|
||||
}
|
||||
|
||||
/**
|
||||
* (委托)在静态上下文中调用一个不可访问方法时,__callStatic() 会被调用
|
||||
* @param $method
|
||||
* @param $arguments
|
||||
* @return mixed
|
||||
* @throws BusinessException
|
||||
*/
|
||||
public static function __callStatic($method, $arguments)
|
||||
{
|
||||
static::one(true);
|
||||
if (method_exists(self::$_instance, $method) && is_callable([self::$_instance, $method])) {
|
||||
return self::$_instance->{$method}(... $arguments);
|
||||
}
|
||||
throw new BusinessException($method. '不存在或不可调用');
|
||||
}
|
||||
}
|
||||
|
|
|
@ -55,16 +55,24 @@ function get_current_git_filemtime($branch = 'master'):string
|
|||
function ff($text = '', $desp = '')
|
||||
{
|
||||
$token = env('IYUU', '');
|
||||
$desp = ($desp=='')?date("Y-m-d H:i:s") :$desp;
|
||||
$postdata = http_build_query(array(
|
||||
$desp = ($desp == '') ? date("Y-m-d H:i:s") : $desp;
|
||||
$postdata = array(
|
||||
'text' => $text,
|
||||
'desp' => $desp
|
||||
));
|
||||
$opts = array('http' => array(
|
||||
'method' => 'POST',
|
||||
'header' => 'Content-type: application/x-www-form-urlencoded',
|
||||
'content' => $postdata
|
||||
));
|
||||
);
|
||||
|
||||
$opts = array(
|
||||
'http' => array(
|
||||
'method' => 'POST',
|
||||
'header' => 'Content-type: application/x-www-form-urlencoded',
|
||||
'content' => http_build_query($postdata)
|
||||
),
|
||||
// 解决SSL证书验证失败的问题
|
||||
'ssl' => array(
|
||||
'verify_peer' => false,
|
||||
'verify_peer_name' => false,
|
||||
)
|
||||
);
|
||||
$context = stream_context_create($opts);
|
||||
$result = file_get_contents('http://iyuu.cn/'.$token.'.send', false, $context);
|
||||
return $result;
|
||||
|
|
Loading…
Reference in New Issue
Block a user