knplabs / packagist-api
Packagist API 客户端。
v2.1.0
2023-12-07 07:50 UTC
Requires
- php: ^7.4 || ^8.0
- ext-json: *
- composer/metadata-minifier: ^1.0
- composer/semver: ^1.0|^2.0|^3.0
- doctrine/inflector: ^1.0 || ^2.0
- guzzlehttp/guzzle: ^6.0 || ^7.0
Requires (Dev)
- phpspec/phpspec: ^6.0 || ^7.0
- squizlabs/php_codesniffer: ^3.0
This package is auto-updated.
Last update: 2024-09-14 01:34:49 UTC
README
对 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