iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >php如何实现百度云加速API及SDK封装
  • 579
分享到

php如何实现百度云加速API及SDK封装

2023-07-02 08:07:36 579人浏览 泡泡鱼
摘要

这篇“PHP如何实现百度云加速api及SDK封装”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“php如何实现百度云加速API

这篇“PHP如何实现百度云加速api及SDK封装”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“php如何实现百度云加速API及SDK封装”文章吧。

注意: 官方接口v3和v31有些参数并未实现,或返回的内容和文档描述不符合,所以在封装时交叉使用了2个版本的API,并非码字错漏。

class Yunjiasu{    private $su;    private $name = '';    private $zone = [];    private $zone_fn = [        'dns_records',        'dns_records_post',        'dns_records_patch',        'dns_records_delete',        'purge_cache',    ];    public function __construct($domain, $access_key, $secret_key)    {        $this->su = new YunjiasuCore($access_key, $secret_key);        $this->zone = $this->su->zones(['name' => $domain]);        if (empty($this->zone['id'])) {            throw new Exception('not found domain');        }        $this->name = $domain;    }    public function __call($name, $arguments)    {        if (in_array($name, $this->zone_fn)) {            array_unshift($arguments, $this->zone['id']);        }        return call_user_func_array(array($this->su, $name), $arguments);    }    public function purge_cache($data)    {        return $this->su->purge_cache($this->zone['id'], $data);    }    public function dns_records($data = [])    {        $list = $this->su->dns_records($this->zone['id']);        if (empty($list) || empty($data)) {            return $list;        }        return array_filter(            $list,            function ($item) use ($data) {                isset($data['name']) && $data['name'] .= '.' . $this->name;                return count($data) === count(array_intersect_assoc($item, $data));            }        );    }    public function dns_records_delete($data)    {        return array_map(            function ($rs) {                return $this->su->dns_records_delete($this->zone['id'], $rs['id']);            },            $this->dns_records($data)        );    }}class YunjiasuCore{    private $api_base = 'https://api.su.baidu.com/';    private $access_key = '';    private $secret_key = '';    public function __construct($access_key, $secret_key)    {        $this->access_key = $access_key;        $this->secret_key = $secret_key;    }    ////////////////////////////////////////////////////////////////    public function zones($data)    {        $path = 'v31/yjs/zones';        return $this->api_call('GET', $path, $data);    }    ////////////////////////////////////////////////////////////////    public function dns_records($zone_id)    {        $path = 'v31/yjs/zones/' . $zone_id . '/dns_records';        return $this->api_call('GET', $path);    }    public function dns_records_post($zone_id, $data)    {        $path = 'v31/yjs/zones/' . $zone_id . '/dns_records';        return $this->api_call('POST', $path, $data);    }    public function dns_records_patch($zone_id, $data)    {        $path = 'v31/yjs/zones/' . $zone_id . '/dns_records';        return $this->api_call('PATCH', $path, $data);    }    public function dns_records_delete($zone_id, $id)    {        $path = 'v31/yjs/zones/' . $zone_id . '/dns_records/' . $id;        return $this->api_call('DELETE', $path);    }    ////////////////////////////////////////////////////////////////    public function purge_cache($zone_id, $data)    {        $path = 'v31/yjs/zones/' . $zone_id . '/purge_cache';        return $this->api_call('DELETE', $path, $data);    }    ////////////////////////////////////////////////////////////////    public function custom_certificates($data)    {        $path = 'v3/yjs/custom_certificates';        return $this->api_call('GET', $path, $data);    }    public function custom_certificates_post($data)    {        $path = 'v3/yjs/custom_certificates';        return $this->api_call('POST', $path, $data);    }    public function custom_certificates_delete($data)    {        $path = 'v3/yjs/custom_certificates';        return $this->api_call('DELETE', $path, $data);    }    ////////////////////////////////////////////////////////////////    private function api_call($method, $path, $data = NULL)    {        if (PHP_SAPI == 'cli') {            print_r("\n> " . $method . ' /' . $path);        }        $url = $this->api_base . $path;        $header = $this->api_header($path, $data);        $result = $this->Http_repuest($method, $url, $header, $data);        if (!empty($result['errors'])) {            $error = JSON_encode($result['errors']);            throw new Exception($error);        }        if (!empty($result['result'])) {            return $result['result'];        }        if (!empty($result['success'])) {            return ['success' => true];        }        return $result;    }    private function api_header($path, $data = NULL)    {        $params = [            'X-Auth-Access-Key' => $this->access_key,            'X-Auth-Nonce' => uniqid(),            'X-Auth-Path-Info' => $path,            'X-Auth-Signature-Method' => 'HMac-SHA1',            'X-Auth-Timestamp' => time(),        ];        if (is_array($data)) {            $params = array_merge($params, $data);        }        ksort($params);        $header = $signls = [];        foreach ($params as $k => $v) {            if (is_bool($v)) {                $v = $v ? 'true' : 'false';            }            if (is_array($v)) {                $v = str_replace('","', '", "', json_encode($v, JSON_UNESCAPED_SLASHES));            }            if (strpos($k, 'X-Auth') === 0) {                $header[] = $k . ':' . $v;            }            if ($v !== '') {                $signls[] = $k . '=' . $v;            }        }        $header[] = 'X-Auth-Sign:' . base64_encode(            hash_hmac('sha1', implode('&', $signls), $this->secret_key, true)        );        return $header;    }    ////////////////////////////////////////////////////////////////    private function http_repuest($method, $url, $header = NULL, $body = NULL)    {        $ch = curl_init();        if ($method == 'GET' && $body) {            $url .= '?' . http_build_query($body);            $body = NULL;        }        curl_setopt($ch, CURLOPT_URL, $url);        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);        if ($header) {            curl_setopt($ch, CURLOPT_HTTPHEADER, $header);        }        if ($body) {            if (is_array($body)) {                $body = json_encode($body);            }            curl_setopt($ch, CURLOPT_POSTFIELDS, $body);        }        $result = curl_exec($ch);        $errno = curl_errno($ch);        $error = curl_error($ch);        curl_close($ch);        if ($errno) {            return ['error' => $errno, 'message' => $error];        }        return json_decode($result, true);    }}

以上就是关于“php如何实现百度云加速API及SDK封装”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网PHP编程频道。

--结束END--

本文标题: php如何实现百度云加速API及SDK封装

本文链接: https://www.lsjlt.com/news/340722.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • php实现百度云加速API及SDK封装
    百度云加速API参考文档  https://su.baidu.com/help/index.html#/7_kaifazhinan/2_APIcankao-NEW/2_wa...
    99+
    2024-04-02
  • php如何实现百度云加速API及SDK封装
    这篇“php如何实现百度云加速API及SDK封装”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“php如何实现百度云加速API...
    99+
    2023-07-02
  • 如何在PHP中实现封装性
    封装性是面向对象编程的一个重要概念,它可以提高代码的可维护性和可复用性。在 PHP 中,我们可以通过以下几个方法来实现封装性。访问控制PHP 提供了三种访问修饰符来实现封装性:public、protected 和 private。publi...
    99+
    2023-10-21
    PHP 实现 (Implementation) 封装性 (Encapsulation)
  • php如何实现类似百度搜索功能
    这篇“php如何实现类似百度搜索功能”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“php如何实现类似百度搜索功能”文章吧。p...
    99+
    2023-07-05
  • 如何利用css3实现进度条效果及动态添加百分比
    这篇文章主要介绍了如何利用css3实现进度条效果及动态添加百分比,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。代码:<!DOCTYPE html><...
    99+
    2023-06-08
  • php如何实现数据库操作类的封装
    这篇文章主要为大家展示了“php如何实现数据库操作类的封装”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“php如何实现数据库操作类的封装”这篇文章吧。具体内容如...
    99+
    2024-04-02
  • axios请求响应数据加解密封装如何实现
    本篇内容主要讲解“axios请求响应数据加解密封装如何实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“axios请求响应数据加解密封装如何实现”吧!安装依赖在前端开发中,我们经常需要向后端发送...
    99+
    2023-07-05
  • 如何实现基于百度地图api清除指定覆盖物Overlay的方法
    这篇文章主要介绍如何实现基于百度地图api清除指定覆盖物Overlay的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!清除覆盖物有两个方法:map.removeOverlay()...
    99+
    2024-04-02
  • PHP如何实现记录代码运行时间封装类
    这篇文章给大家分享的是有关PHP如何实现记录代码运行时间封装类的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。示例代码class TimeCost {  pr...
    99+
    2024-04-02
  • 深度解析:如何通过 Windows API 实现 ASP 日志的快速分析?
    ASP(Active Server Pages)是一种基于服务器端的动态网页技术,广泛应用于Web应用程序的开发。在ASP应用程序中,日志记录是必不可少的功能。ASP日志记录功能可以帮助我们跟踪应用程序的运行状况,分析应用程序的性能问题,以...
    99+
    2023-06-17
    日志 windows api
  • Android如何使用加速度传感器实现摇一摇功能
    这篇文章将为大家详细讲解有关Android如何使用加速度传感器实现摇一摇功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体如下:目前很多应用已经实现了摇一摇功能,这里通过讲解该功能的原理及实现回顾一下...
    99+
    2023-05-30
    android
  • php对接百度网盘开发平台API开发高级实战案例解析:(环境部署、php封装类、Access Token获取、预上传、分片上传)
    文章目录 前言一、环境部署1.封装BdPan类库2.回调地址配置 二、获取授权码Code1.手动获取Code2.生成本地token3.读取AccessToken凭证4.爬虫函数 二、简...
    99+
    2023-09-09
    php 开发语言
  • JavaScript如何实现封装一个快速生成目录树的全局脚本
    本篇内容主要讲解“JavaScript如何实现封装一个快速生成目录树的全局脚本”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaScript如何实现封装一个快速生成目录树的全局脚本”吧!说在...
    99+
    2023-07-05
  • 基于 PHP 和 Django,如何实现快速加载和响应性能?
    随着互联网的发展,快速加载和响应性能已成为网站开发中不可忽视的重要因素。PHP和Django是两种常用的Web开发框架,它们都提供了很多优秀的特性和工具来帮助我们提高网站的性能和用户体验。本文将介绍如何在PHP和Django中实现快速加载和...
    99+
    2023-08-28
    npm django load
  • 想要提高Shell缓存加载速度,该如何使用Go语言实现?
    Shell缓存是指Shell命令的缓存,可以提高Shell命令的执行速度。在使用Shell命令时,如果命令需要频繁执行,那么Shell缓存可以大大提高命令的执行速度。然而,随着缓存文件的增多,Shell缓存的加载速度也会变得越来越慢。那么...
    99+
    2023-08-19
    load shell 缓存
  • 如何用浏览器扩展程序来添加CSS样式实现百度贴吧清爽界面
    这篇文章主要讲解了“如何用浏览器扩展程序来添加CSS样式实现百度贴吧清爽界面”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何用浏览器扩展程序来添加CSS样...
    99+
    2024-04-02
  • 如何使用PHP7的闭包实现更加灵活的逻辑封装和代码隔离?
    如何使用PHP7的闭包实现更加灵活的逻辑封装和代码隔离?摘要:使用闭包(Closure)是PHP开发中非常重要的概念。在PHP 7之前,闭包的使用相对较为繁琐,并且存在一些限制。而PHP 7引入了匿名类和Closure::call()等新特...
    99+
    2023-10-26
    PHP 闭包 逻辑封装
  • 如何使用PHP7的匿名类实现更加灵活和可扩展的对象封装?
    如何使用PHP7的匿名类实现更加灵活和可扩展的对象封装?随着PHP7的发布,匿名类成为了PHP开发中一个重要的功能特性。匿名类的引入使得我们可以更加灵活地封装对象和实现可扩展的代码。在本文中,我们将探讨如何使用PHP7的匿名类来实现更加灵活...
    99+
    2023-10-27
    匿名类 关键词:PHP 对象封装
  • 如何利用PHP7的匿名函数和闭包实现更加灵活的逻辑封装?
    如何利用PHP7的匿名函数和闭包实现更加灵活的逻辑封装?在PHP7中,匿名函数和闭包是非常强大的特性,它们可以帮助我们实现更加灵活和复用性高的代码封装。本文将介绍如何使用PHP7的匿名函数和闭包来实现这些功能,并提供具体的代码示例。闭包是一...
    99+
    2023-10-22
    PHP 闭包 匿名函数 灵活 逻辑封装。
  • 微信小程序如何实现自定义组件封装及父子间组件传值
    小编给大家分享一下微信小程序如何实现自定义组件封装及父子间组件传值,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!首先在我们可以直...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作