Salta ai contenuti

Installare il bridge Cloudflare per NextPDF

Installare il pacchetto con Composer. Aggiungere quindi un client HTTP PSR-18 e un’implementazione delle factory PSR-17. Il bridge dichiara le interfacce; non include un client HTTP concreto.

Il bridge legge questi requisiti dalla sezione require di composer.json:

DipendenzaVincolo
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

Il pacchetto carica automaticamente NextPDF\Cloudflare\ da src/Cloudflare/ (PSR-4). Supera l’analisi statica con PHPStan Level 10 e non include alcuna baseline dell’analizzatore.

Terminal window
composer require nextpdf/cloudflare

Il costruttore del bridge richiede un ClientInterface PSR-18, un RequestFactoryInterface PSR-17 e uno StreamFactoryInterface PSR-17. Il percorso di trasporto fissato usa anche un ResponseFactoryInterface PSR-17 quando se ne fornisce uno. Qualsiasi implementazione conforme è valida. Il README cita Guzzle come esempio:

Terminal window
composer require guzzlehttp/guzzle

Guzzle 7 fornisce tutte e quattro le interfacce factory PSR-17 e il client PSR-18. Symfony HttpClient, Buzz e altri stack conformi sono altrettanto validi. Il pacchetto è indipendente dal fornitore per progettazione. Il test tests/Unit/Architecture/PsrConformanceTest.php verifica che il pacchetto dipenda solo dai contratti PSR, non da alcun client concreto.

Quando il Worker non è raggiungibile e il fallback è abilitato, il bridge può delegare a un renderer locale. Il renderer viene fornito tramite NextPDF\Cloudflare\Contract\LocalRendererFactoryInterface. Il blocco suggest in composer.json cita l’implementazione first-party:

Terminal window
composer require nextpdf/artisan

Installare nextpdf/artisan non è di per sé sufficiente. È necessario passare anche un LocalRendererFactoryInterface al costruttore del renderer. Il bridge rileva quando Artisan è installato ma non è stata cablata alcuna factory. In quel caso solleva una CloudflareNotAvailableException con un messaggio che lo indica in modo esplicito. Per il cablaggio, consultare /integrations/cloudflare/production-usage/.

<?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() restituisce true quando workerUrl e apiToken sono entrambi non vuoti. Non contatta la rete. È un controllo puro di completezza della configurazione, adatto a uno smoke test al momento del deploy.

  • /integrations/cloudflare/configuration/ — la superficie completa di configurazione.
  • /integrations/cloudflare/quickstart/ — il primo rendering.
  • /integrations/cloudflare/boot-and-discovery/ — cablare il bridge nel container di un framework.