Aller au contenu

Installer le pont Cloudflare de NextPDF

Installe le paquet avec Composer. Ajoute ensuite un client HTTP PSR-18 et une implémentation de fabrique PSR-17. Le pont ne déclare que les interfaces ; il n’embarque aucun client HTTP concret.

Le pont lit ces contraintes dans la section require de composer.json :

DépendanceContrainte
PHP>=8.4 <9.0
nextpdf/core^3.0
psr/http-client (PSR-18)^1.0
psr/http-factory (PSR-17)^1.1
psr/log (PSR-3)^3.0

Le paquet charge automatiquement NextPDF\Cloudflare\ depuis src/Cloudflare/ (PSR-4). Il passe l’analyse statique au niveau 10 de PHPStan et ne fournit aucune base de référence pour l’analyse statique.

Fenêtre de terminal
composer require nextpdf/cloudflare

Le constructeur du pont exige un ClientInterface PSR-18, un RequestFactoryInterface PSR-17 et un StreamFactoryInterface PSR-17. Le chemin de transport épinglé utilise aussi un ResponseFactoryInterface PSR-17 si tu en fournis un. Toute implémentation conforme convient. Le README donne Guzzle en exemple :

Fenêtre de terminal
composer require guzzlehttp/guzzle

Guzzle 7 fournit les quatre interfaces de fabrique PSR-17 ainsi que le client PSR-18. Symfony HttpClient, Buzz et les autres piles conformes conviennent tout aussi bien. Le paquet est indépendant de tout fournisseur par conception. Le test tests/Unit/Architecture/PsrConformanceTest.php vérifie que le paquet dépend uniquement des contrats PSR, et d’aucun client concret.

Lorsque le Worker est injoignable et que le repli est activé, le pont peut déléguer le rendu à un moteur local. Tu fournis ce moteur de rendu via NextPDF\Cloudflare\Contract\LocalRendererFactoryInterface. Le bloc suggest de composer.json référence l’implémentation de première partie :

Fenêtre de terminal
composer require nextpdf/artisan

Installer nextpdf/artisan ne suffit pas à soi seul. Tu dois aussi passer un LocalRendererFactoryInterface au constructeur du moteur de rendu. Le pont détecte les cas où Artisan est installé mais où aucune fabrique n’a été câblée. Il lève alors une CloudflareNotAvailableException avec un message explicite. Voir /integrations/cloudflare/production-usage/ pour le câblage.

<?php
declare(strict_types=1);
require __DIR__ . '/vendor/autoload.php';
use NextPDF\Cloudflare\CloudflareRendererConfig;
$config = new CloudflareRendererConfig(
workerUrl: 'https://pdf-renderer.example.workers.dev/render',
apiToken: 'placeholder',
);
echo $config->isValid() ? "ready\n" : "incomplete\n";

isValid() renvoie true lorsque workerUrl et apiToken sont tous deux non vides. La méthode ne contacte pas le réseau. Elle effectue seulement une vérification de complétude de la configuration, adaptée à un test de fumée au moment du déploiement.

  • /integrations/cloudflare/configuration/ — toute la surface de configuration.
  • /integrations/cloudflare/quickstart/ — ton premier rendu.
  • /integrations/cloudflare/boot-and-discovery/ — câbler le pont dans le conteneur d’un framework.