1. Go to this page and download the library: Download smnandre/packapi library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
smnandre / packapi example snippets
use PackApi\Inspector\PackageInspectorFacade;
use PackApi\Package\ComposerPackage;
$package = new ComposerPackage('symfony/console');
$report = PackageInspectorFacade::defaults()->inspect($package);
echo 'Package: '.($report->metadata?->name ?? $package->getName())."\n";
echo 'Monthly downloads: '.($report->getMonthlyDownloads() ?? 'N/A')."\n";
echo 'Quality: '.($report->quality?->grade ?? 'N/A')."\n";
use PackApi\Inspector\MetadataInspector;
use PackApi\Bridge\Packagist\PackagistProviderFactory;
use PackApi\Package\ComposerPackage;
$factory = new PackagistProviderFactory($httpClient);
$inspector = new MetadataInspector([
$factory->createMetadataProvider()
]);
$package = new ComposerPackage('laravel/framework');
$metadata = $inspector->getMetadata($package);
echo $metadata->getName() . "\n"; // laravel/framework
echo $metadata->getDescription() . "\n"; // The Laravel Framework
echo $metadata->getLicense() . "\n"; // MIT
echo $metadata->getRepository() . "\n"; // https://github.com/laravel/framework
use PackApi\Inspector\DownloadStatsInspector;
use PackApi\Package\NpmPackage;
$inspector = new DownloadStatsInspector([
$npmFactory->createDownloadStatsProvider(),
$packagistFactory->createStatsProvider()
]);
$package = new NpmPackage('react');
$stats = $inspector->getStats($package);
$monthly = $stats->get('monthly');
if ($monthly) {
echo "Downloads this month: " . number_format($monthly->getCount()) . "\n";
$days = $monthly->getEnd()->diff($monthly->getStart())->days + 1;
echo "Daily average: " . number_format($monthly->getCount() / $days) . "\n";
}
use PackApi\Bridge\JsDelivr\JsDelivrProviderFactory;
use PackApi\Inspector\DownloadStatsInspector;
use PackApi\Package\SwiftPackage;
$inspector = new DownloadStatsInspector([
(new JsDelivrProviderFactory($httpFactory))->createStatsProvider(),
]);
$stats = $inspector->getStats(new SwiftPackage('Alamofire', 'Alamofire'));
echo $stats?->get('monthly')?->getCount() ?? 'N/A';
use PackApi\Inspector\SecurityInspector;
use PackApi\Bridge\OSV\OSVProviderFactory;
use PackApi\Bridge\GitHub\GitHubProviderFactory;
$inspector = new SecurityInspector([
$osvFactory->createSecurityProvider(), // OSV Database
$githubFactory->createSecurityProvider() // GitHub Security Advisories
]);
$advisories = $inspector->getSecurityAdvisories($package);
foreach ($advisories as $advisory) {
echo "ALERT: {$advisory->getTitle()}\n";
echo " Severity: {$advisory->getSeverity()}\n";
echo " Link: {$advisory->getLink()}\n\n";
}
use PackApi\Bridge\BundlePhobia\BundlePhobiaProviderFactory;
$httpFactory = new HttpClientFactory();
$factory = new BundlePhobiaProviderFactory($httpFactory);
$sizeProvider = $factory->createBundleSizeProvider();
$package = new NpmPackage('lodash');
$bundleSize = $sizeProvider->getBundleSize($package);
if ($bundleSize) {
echo "Bundle size: " . $bundleSize->getFormattedSize() . "\n";
echo "Gzipped: " . $bundleSize->getFormattedGzipSize() . "\n";
echo "Dependencies: " . $bundleSize->getDependencyCount() . "\n";
}
use PackApi\Http\HttpClientFactory;
$httpFactory = new HttpClientFactory();
$client = $httpFactory->createClient([
'enable_quic' => true // Automatic fallback if not supported
]);
use PackApi\Inspector\PackageInspectorFacade;
$inspector = PackageInspectorFacade::defaults(
githubToken: getenv('GITHUB_TOKEN') ?: null,
);
// 1. Implement the provider interface
class MyCustomProvider implements MetadataProviderInterface
{
public function supports(Package $package): bool { /* ... */ }
public function getMetadata(Package $package): ?Metadata { /* ... */ }
}
// 2. Create a factory
class MyCustomProviderFactory
{
public function createMetadataProvider(): MyCustomProvider
{
return new MyCustomProvider($this->httpClient);
}
}
// 3. Use in inspector
$inspector = new MetadataInspector([
new MyCustomProvider($httpClient)
]);