dlondero / strava-objects
PHP 数据传输对象,用于与 Strava API V3 交互
Requires
- php: ^7.4
- ext-json: *
Requires (Dev)
- phpstan/phpstan: ^0.11.15
- phpunit/phpunit: ^8
This package is auto-updated.
Last update: 2024-09-21 03:50:12 UTC
README
TL;DR:PHP 模型类,用于 Strava V3 API 响应
Strava V3 API(Strava V3 API)是公开接口,允许开发者访问丰富的 Strava 数据集。直接从 API 获取信息或使用可用的 PHP 客户端库将使我们处理 JSON 响应(解码)或处理常规数据数组。
该包的目标是为存储在关联数组中的非结构化数据提供结构。表示 Strava 模型的模型对象将给我们以下优势
- 我们可以对所有响应进行 类型提示
- 为我们的对象的所有属性定义类型,因此我们可以确信它们的值是我们期望的
- 由于类型属性,我们可以静态分析它们并获得 自动完成。
要求
- PHP >= 7.4
安装
使用 Composer
composer require dlondero/strava-objects
否则,只需下载包并将其添加到自动加载器中。命名空间符合 PSR-4 规范。
使用
让我们看看获取一个 活动 的例子(想象使用返回关联数组的客户端库)
$response = $client->getActivity(12345); [ 'id' => 12345, 'name' => 'Foo', 'distance' => 28099, ... ]
处理此数组很困难,因为我们始终需要查找文档以了解其中确切包含什么。此包允许使用响应数组实例化所有模型对象。
Strava 文档中定义的每个模型都在此库中一对一映射,因此很容易理解如何根据特定的 API 响应创建对象。
// According to Stava docs `getActivityById` returns the representation of // `DetailedActivity`. So we can use its response to create an instance of // that model provided by StravaObjects. use StravaObjects\Objects\DetailedActivity; $response = $client->getActivityById(12345); $detailedActivity = DetailedActivity::create($response);
现在我们可以通过每个模型的访问器和我们首选 IDE 中的自动完成以结构化方式使用这些数据。
集合
Strava API 的许多端点返回对象数组(它们的表示),因此 StravaObjects 提供了许多实现 IteratorAggregate
接口的集合。将响应传递给 Collection::create()
将创建集合及其所有类型化元素。
// According to Strava docs `getLoggedInAthleteActivities` returns an // array of `SummaryActivity` objects. Creating the related collection // is a one liner operation. use StravaObjects\Collections\Collection; use StravaObjects\Objects\SummaryActivity; $response = $client->getLoggedInAthleteActivities(); $summaryActivityCollection = Collection::create($response, SummaryActivity::class);
开发
StravaObjects 库由软件工程师和超长跑运动员 Daniel Londero 创建。软件工程师 和 超长跑运动员。
许可证
StravaObjects 库是开源软件,许可协议为 MIT。