dlondero/strava-objects

PHP 数据传输对象,用于与 Strava API V3 交互

dev-master 2019-08-20 15:57 UTC

This package is auto-updated.

Last update: 2024-09-21 03:50:12 UTC


README

Build Status

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。