knplabs/packagist-api

Packagist API 客户端。

v2.1.0 2023-12-07 07:50 UTC

README

Build status Latest Stable Version Total Downloads

对 Packagist API 的简单面向对象包装。

需求

  • PHP ^7.4 或 ^8.0 (对于 PHP 7.1-7.3,请使用 1.x 版本线)

安装

推荐通过 composer 安装 Packagist API。

composer require knplabs/packagist-api

使用方法

搜索包

<?php

$client = new Packagist\Api\Client();

foreach ($client->search('sylius') as $result) {
    echo $result->getName();
}

// Outputs:
sylius/sylius
sylius/resource-bundle
sylius/cart-bundle
sylius/flow-bundle
sylius/sales-bundle
sylius/shipping-bundle
sylius/taxation-bundle
sylius/money-bundle
sylius/assortment-bundle
sylius/addressing-bundle
sylius/payments-bundle
sylius/taxonomies-bundle
sylius/inventory-bundle
sylius/settings-bundle
sylius/promotions-bundle
...

可以限制结果到指定页数

<?php

$client->search('sylius', [], 2)  // get first 2 pages

获取包详情

获取完整的包详情,由 Packagist API 动态生成。如果您不需要包的所有完整元数据,请考虑使用 getComposer() 来更有效地使用 Packagist API。

<?php

$package = $client->get('sylius/sylius');

printf(
    'Package %s. %s.',
    $package->getName(),
    $package->getDescription()
);

// Outputs:
Package sylius/sylius. Modern ecommerce for Symfony2.

获取 composer 详情:{#get-composer-details}

类似于 get(),但使用 Composer 元数据,这是 Packagist 推荐的获取详情的方式,因为 Packagist 服务通过静态文件高效缓存响应。响应缺少一些由 get() 提供的元数据,详细信息请见 Packagist API 文档。返回多个包,您需要从索引数组中选择所需的包。

<?php

$packages = $client->getComposer('sylius/sylius');
$package = $packages['sylius/sylius'];
$versions = $package->getVersions();

printf(
    'Package %s. %s.',
    $versions[0]->getName(),
    $versions[0]->getDescription()
);

// Outputs:
Package sylius/sylius. Modern ecommerce for Symfony2.

列出所有包

<?php

foreach ($client->all() as $package) {
    echo $package;
}

// Outputs:
abhinavsingh/jaxl
abishekrsrikaanth/fuel-util
abmundi/database-commands-bundle
...

可以根据类型或供应商进行筛选

<?php

$client->all(array('type' => 'library'));
$client->all(array('vendor' => 'sylius'));

自定义 Packagist 仓库

您还可以设置自定义的 Packagist 仓库 URL

<?php

$client->setPackagistUrl('https://custom.packagist.site.org');

错误

  • 当 Packagist API 返回 404 响应时,将抛出 Packagist\Api\PackageNotFoundException
  • 当 Packagist 的响应无法被解析时,将抛出 \InvalidArgumentException

许可证

packagist-api 采用 MIT 许可证 - 详细信息请见 LICENSE 文件。

维护者

KNPLabs 正在寻找维护者(查看原因)。

如果您感兴趣,请随时提交 PR 请求添加为维护者。

我们很高兴听到您的反馈 :)

此库由以下人员维护(按字母顺序排序)

  • @robbieaverill