esi / librariesio

LibrariesIO - Libraries.io API 的简单 API 包装器/客户端。

v1.1.1 2024-03-14 08:33 UTC

README

Build Status Code Coverage Scrutinizer Code Quality Tests PHPStan Psalm Static analysis PHPMD Type Coverage Psalm Level Latest Stable Version Downloads per Month License

2.0.0 重要说明

  • “master” 分支是用于开发即将推出的 2.0.0 版本。
  • 应该没问题,但仍然建议在生产环境中谨慎使用。
  • 函数参数、类 API 等,在开发过程中可能会发生变化。
  • 文档(目前为 WIP)尚未更新更改。

重要说明

该项目源于我扩展对 API 和 GuzzleHttp 知识的愿望。我的实现远非完美,因此我欢迎任何反馈。

  • Libraries.io API 具有分页能力,但此库中尚未完全实现。

安装

Composer

使用以下命令安装最新版本:

$ composer require esi/librariesio

然后,在您的项目中(如果尚未包含),包括 composer 的自动加载。例如

<?php

require 'vendor/autoload.php';

?>

有关更多信息,请参阅安装文档。

基本用法

LibrariesIO 根据其 "组件" 将不同的端点分开

  • Esi\LibrariesIO\LibrariesIO::platform()
    • 不需要 $endpoint,尽管您可以传递 'platforms'。
  • Esi\LibrariesIO\LibrariesIO::project()
    • 需要一个 'endpoint' 参数来指定您要查找的子集。
      • 当前端点有
        • contributors
        • dependencies
        • dependents
        • dependent_repositories
        • project
        • search
        • sourceRank
  • Esi\LibrariesIO\LibrariesIO::repository()
    • 需要一个 'endpoint' 参数来指定您要查找的子集。
      • 当前端点有
        • dependencies
        • projects
        • repository
  • Esi\LibrariesIO\LibrariesIO::user()
    • 需要一个 'endpoint' 参数来指定您要查找的子集。
      • 当前端点有
        • dependencies
        • packages
        • package_contributions
        • repositories
        • repository_contributions
        • subscriptions
        • user
  • Esi\LibrariesIO\LibrariesIO::subscription()
    • 需要一个 'endpoint' 参数来指定您要查找的子集。
      • 当前端点有
        • subscribe
        • check
        • update
        • unsubscribe

每个 'subset' 都有自己的必需选项。请查阅文档(目前为 WIP)以获取更多信息。

例如,假设您想获取可用的平台列表。要这样做

<?php

use Esi\LibrariesIO\LibrariesIO;
use Esi\LibrariesIO\Utils;

$api = new LibrariesIO('..yourapikey..', \sys_get_temp_dir());
$response = $api->platform();

print_r(Utils::toArray($response));

/*
Array
(
    [0] => Array
        (
            [name] => NPM
            [project_count] => 4079049
            [homepage] => https://npmjs.net.cn
            [color] => #f1e05a
            [default_language] => JavaScript
        )

    [1] => Array
        (
            [name] => Maven
            [project_count] => 588275
            [homepage] => http://maven.org
            [color] => #b07219
            [default_language] => Java
        )
    [...]
)
*/
?>

有关更多信息,请参阅基本用法文档。

测试

单元测试由 PHPUnit 处理。鉴于此库的性质,其目的是与实时 API 交互,因此测试有限。

在执行测试时,不会对 libraries.io API 进行实际调用。相反,使用模拟数据和模拟类实例来测试库是否正常工作。

文档

文档位于 docs/ 目录或在线 这里

关于

需求

  • LibrariesIO 与 PHP 8.2.0 或更高版本兼容。
  • 所有 API 请求都包含一个 api_key 参数。您需要从 libraries.io 的账户页面获取您的 API 密钥。

提交错误和功能请求

错误和功能请求在 GitHub 上跟踪

问题是最快报告错误的方式。如果您发现错误或文档错误,请首先检查以下内容

  • 不存在关于此错误的已开放问题
  • 该问题尚未被解决(例如,在已关闭的问题中)

贡献

LibrariesIO接受社区对代码和文档的贡献。这些贡献可以以问题或拉取请求的形式提交到LibrariesIO仓库

LibrariesIO采用MIT许可证。当您向LibrariesIO提交新功能或补丁时,您正在授予许可以在MIT许可证下许可这些功能或补丁。

LibrariesIO尝试遵循PHPStan级别9的严格规则和前沿技术。请确保任何贡献也这样做。

指南

在探讨如何之前,以下是指南。如果您的拉取请求未能通过这些指南,则将被拒绝,您需要修改后再重新提交。这可能听起来有些严格,但这是为了维持代码库的质量所必需的。

PHP风格

请确保所有新的贡献符合PSR-12编码风格指南。项目目前尚未完全符合PSR-12,但为了确保最容易过渡到编码指南,我建议任何贡献都遵循它们。

文档

如果您更改了需要更改文档的内容,那么您需要添加它。新方法、参数、更改默认值、添加常量等,都需要更改文档。变更日志也必须更新每个更改。此外,PHPDoc块也必须维护。

文档化函数/变量(PHPDoc)

请确保所有新的贡献遵守

当文档化新函数或更改现有文档时。

分支

一次一件事情:拉取请求应只包含一个更改。这并不意味着只有一个提交,而是一个更改——无论需要多少个提交。这样做的原因是,如果您同时更改X和Y,但发送了一个包含这两个更改的拉取请求,我们可能真的需要X,但不同意Y,这意味着我们无法合并请求。使用Git-Flow分支模型,您可以创建这两个功能的分支并发送两个请求。

作者

Eric Sizemore - admin@secondversion.com - https://www.secondversion.com

许可证

LibrariesIO采用MIT许可证 - 有关详细信息,请参阅LICENSE.md文件