Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Packagist Api Laravel Package

knplabs/packagist-api

A simple object-oriented PHP wrapper for the Packagist API, offering package search, full package details, and efficient Composer metadata retrieval. Easily list results, limit pages, and access names, descriptions, and versions.

View on GitHub
Deep Wiki
Context7

Packagist API

Build status Latest Stable Version Total Downloads

Simple object oriented wrapper for Packagist API.

Requirements

  • PHP ^8.0 (for PHP 7.4 please use version ~2.1.0)

Installation

The recommended way to install Packagist API is through composer:

composer require knplabs/packagist-api

Usage

Search for packages:

<?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
...

You can limit results to a desired amount of pages:

<?php

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

Get package details:

Gets full package details, generated dynamically by the Packagist API. Consider using getComposer() instead to use the Packagist API more efficiently if you don't need all the full metadata for a package.

<?php

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

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

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

Get composer details: {#get-composer-details}

Similar to get(), but uses Composer metadata which is Packagist's preferred way of retrieving details, since responses are cached efficiently as static files by the Packagist service. The response lacks some metadata that is provided by get(), see Packagist API documentation for details. Returns multiple packages, you need to select the requested one from the indexed array.

<?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.

List all packages:

<?php

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

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

They can be filtered by type or vendor:

<?php

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

Custom Packagist repositories

You can also set a custom Packagist repository URL:

<?php

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

Errors

  • A Packagist\Api\PackageNotFoundException will be thrown when the Packagist API returns a 404 response.
  • An \InvalidArgumentException will be thrown when the response from Packagist was not able to be parsed.

License

packagist-api is licensed under the MIT License - see the LICENSE file for details.

Maintainers

KNPLabs is looking for maintainers (see why).

If you are interested, feel free to open a PR to ask to be added as a maintainer.

We’ll be glad to hear from you :)

This library is maintained by the following people (alphabetically sorted) :

  • @robbieaverill
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
se7enxweb/flysystem
lampwick/laravel
jeslage/statamic-emojis
micahdshackelford/rmap-laravel
draftsmaninc/draftsman
square-bit/laravel-volition
himito/laravel-mailman
htinlynn/genius-helper
maco-studios/hephaestus
elmogy/larafast
xeviant/laravel-paystack
gorilladash/laravel-website-sdk
martialbe/flysystem-oss
chondal/3312client
jeroen-g/flickr
opscale-co/nova-genbi
itsjustvita/laravel-retention
tequilarapido/trackit
gregsphotography/site-builder-filament
cabaoctavio/laravel-query-log