koba/informat-php-client

informat API 的 PHP 封装器

0.1.10-alpha 2024-05-30 10:29 UTC

README

Informat 学校软件 API 的 PHP 客户端库。此客户端允许您

  • 获取学生信息
  • 获取注册信息
  • 创建新的预注册

安装

您可以通过 composer 简单地安装此库

composer require koba/informat-php-client

此库还需要 PSR-17 和 PSR-18 实现。如果这些尚未包含在您的项目中,您可以安装 Guzzle 7 来满足此要求(尽管任何其他实现都将正常工作)

composer require guzzlehttp/guzzle

使用方法

此库建立在 3 个主要 '层' 上

  • Informat 类,使用您的客户端 ID 和密钥进行实例化。
  • 目录,这是 api 调用的逻辑组。您可以通过使用 Informat 类提供的方 法获取这些目录。
  • API 调用,您可以通过使用目录提供的方 法进行实例化。

下面的代码是一个快速示例,说明如何获取学生信息

use Koba\Informat\Informat;
use Koba\Informat\Scopes\AllScopesStrategy;

$informat = new Informat(
    'your-client-id',
    'your-client-secret',
    new AllScopesStrategy('000001', '000002', '000003'),
);

 $informat
    ->students()
    ->getStudents('000001')
    ->send();

这将返回一个包含 Student 对象的数组,该对象具有类型化(并具有文档)的属性。

作用域

如上所示,创建 Informat 对象相对简单。作用域参数可能需要一些额外的解释。

在上面的示例中,您看到我们向构造函数传递了一个 AllScopesStrategy 对象。这是一种让 API 客户端知道我们想要请求哪些作用域的方法,这直接影响您将有权执行的 API 调用。此库提供了 AllScopesStrategy,它将请求所有可能的作用域,以及 SpecificScopesStrategy,它允许您指定将请求的作用域。两者都需要您作为参数传递所有要访问的学校的教育机构编号。后者可能更适合,如果您的客户端没有权限访问所有作用域,或者出于安全原因希望限制功能。

您还可以通过实现 ScopeStrategyInterface 创建自己的作用域策略。

调用

在管理调用时应遵循一些 '规则'。

  • 当使用目录上的方法创建调用时,必须将 API 调用所需的全部参数传递给函数。教育机构编号始终是第一个参数,因为它对所有 API 调用都是必需的。
  • 可以使用 API 调用上的设置器设置所有可选参数。
  • API 调用上的设置器返回调用本身,这意味着您可以轻松地将它们链接在一起。
  • API 调用始终使用 send 方法执行。

以下是一个说明这些点的示例

$informat
    ->students()
    ->getStudent(
        '000001', // institute number
        'bd26bb65-f54a-488d-866b-e1f9927d6be5' // student id
    )
    ->setReferenceDate(new DateTime())
    ->send();

高级

Informat 对象有一些高级设置选项。您可以传递一个 AccessTokenManagerInterface 对象,这允许您实现自己的访问令牌缓存解决方案。其余的构造函数可以用于传递 psr-18 客户端接口和 psr-17 HTTP 响应工厂。如果省略这些选项,则库将自动发现任何合适的实现。