IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> 学习PHP扩展包开发笔记 -> 正文阅读

[PHP知识库]学习PHP扩展包开发笔记

#学习php扩展包开发:GitHub - Gelaku/weather: 基于高德开放平台接口的 PHP 天气信息组件。
https://zhangxueren.club/2018/11/build_composer_1.html
https://zhangxueren.club/2018/11/build_composer_2.html

#安装包构建工具
composer global require 'overtrue/package-builder' --prefer-source
#创建一个包
package-builder build [目标目录]

###################### start #######################

#示例创建一个天气SDK扩展包
package-builder build weather
# 然后按提示操作即可
# 包名:gelaku/weather
# 命名空间:gelaku\Weather
# 描述:A weather SDK
#需求分析
1.按地名查询实时天气;
2.获取最近的天气预报。

#功能设计
1.主要业务,获取天气信息;
2.异常处理,提供统一的异常类,方便调用芳定位异常;
3.自定义参数,需要支持自定义参数,比如超时时间等;
4.提供Laravel Service Provider,为Laravel框架提供专属封装的入口。

#安装依赖包
#项目需要请求接口,选择 guzzle/guzzle 来做为 http client
cd weather/
composer require guzzlehttp/guzzle
#编辑代码 从接口获取天气数据
src/Weather.php
src/Exceptions/Exception.php

#编写单页测试
#单元测试框架 PHPUnit、依赖模拟 Mockery
composer require phpunit/phpunit mockery/mockery

#phpunit讲解
1.测试用例与类名对应,以 Test.php结尾,比如 WeatherTest.php,类名与文件名一致
2.测试用例需要继承 PHPUnit\Framework\TestCase 基类;
3.测试用例的目录结构与源码一致;
4.测试用例的方法名格式为 test源方法名,比如:testGetWeather.

#创建测试类
tests/WeatherTest.php

#运行测试
./vendor/bin/phpunit --filter testGetWeatherWithInvalid
#错误提示
Failed asserting that exception of type "Gelaku\Weather\Exceptions\HttpException" matches expected exception "Gelaku\Weather\Exceptions\InvalidArgumentException". Message was: "cURL error 60: SSL certificate problem: unable to get
local issuer certificate (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://restapi.amap.com/v3/weather/weatherInfo?key=dcbf9246de70cda4300ae60f3eb0b418&city=%E6%B7%B1%E5%9C%B3&extensions=base&output=json" at
解决方案:
访问https://curl.se/docs/caextract.html,下载cacert.pem,并在php.ini文件添加
curl.cainfo = "D:/Developer/phpstudy_pro/Extensions/php/php8.0.2nts/extras/ssl/cacert.pem"
openssl.cafile="D:/Developer/phpstudy_pro/Extensions/php/php8.0.2nts/extras/ssl/cacert.pem"
#为Laravel集成优化
将高德地图的 API KEY 和 API URL 放在config/services.php 中
config/services.php:
'weather' => [
'key' => env('WEATHER_API_KEY'),
//'url' => env('WEATHER_API_URL'),
],
#编写服务者提供者信息
src/ServiceProvider.php

#发布新包
1.https://github.com/Gelaku/weather 和 https://packagist.org/packages/submit 注册账号
git init                                                    # 初始化 git 项目
git add -A                                                  # 添加全部文件到 git
git commit -am "first commit"                               # 提交添加的文件
git remote add origin https://github.com/Gelaku/weather.git   # 设置远程地址
git push -u origin master                                   # 将提交推送到远程仓库

#添加代码版本号 https://git-scm.com/book/zh/v2/Git-%E5%9F%BA%E7%A1%80-%E6%89%93%E6%A0%87%E7%AD%BE
git tag v1.0.0 #添加版本号
git push origin v1.0.0 #推送版本到 github
git push origin --tags #将所有不在远程仓库服务器上的标签全部传送到那里
git tag -d v1.0.0 #删除本地版本号
git push origin :refs/tags/v1.0.0 #将删除的版本号推送到 github
git push origin --delete v1.0.0 #直接删除远程标签
2.将github代码仓库与packagist做关联
  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2022-01-08 13:45:21  更:2022-01-08 13:46:03 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 14:53:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码