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