Перейти к содержимому

Установка моста NextPDF Cloudflare

Установите пакет через Composer. Затем добавьте HTTP-клиент, реализующий PSR-18, и фабрики, реализующие PSR-17. Мост объявляет интерфейсы; конкретный HTTP-клиент в него не входит.

Мост берёт эти зависимости из раздела require файла composer.json:

ЗависимостьОграничение
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

Пакет автоматически загружает NextPDF\Cloudflare\ из src/Cloudflare/ (PSR-4). Он проходит статический анализ на уровне PHPStan Level 10 и поставляется без базового набора исключений анализатора.

Окно терминала
composer require nextpdf/cloudflare

Конструктору моста требуются PSR-18 ClientInterface, PSR-17 RequestFactoryInterface и PSR-17 StreamFactoryInterface. При фиксированном транспорте также используется PSR-17 ResponseFactoryInterface, если вы его предоставите. Вы можете использовать любую совместимую реализацию. В README как один из примеров указан Guzzle:

Окно терминала
composer require guzzlehttp/guzzle

Guzzle 7 предоставляет клиент PSR-18 и все четыре фабричных интерфейса PSR-17. Symfony HttpClient, Buzz и другие совместимые стеки тоже подходят. Пакет по своей конструкции не привязан к конкретному поставщику. Тест tests/Unit/Architecture/PsrConformanceTest.php проверяет, что пакет зависит только от контрактов PSR, а не от какого-либо конкретного клиента.

Дополнительно: локальный резервный вариант на Chrome

Заголовок раздела «Дополнительно: локальный резервный вариант на Chrome»

Когда Worker недоступен и включён резервный вариант, мост может делегировать отрисовку локальному рендереру. Этот рендерер вы предоставляете через NextPDF\Cloudflare\Contract\LocalRendererFactoryInterface. Блок suggest в composer.json указывает реализацию от поставщика:

Окно терминала
composer require nextpdf/artisan

Одной установки nextpdf/artisan недостаточно. Вы также должны передать LocalRendererFactoryInterface в конструктор рендерера. Если Artisan установлен, но фабрика не подключена, мост обнаруживает это состояние и вызывает CloudflareNotAvailableException. Сообщение исключения прямо указывает на эту причину. Описание подключения см. в /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() возвращает true, когда оба значения — workerUrl и apiToken — не пусты. Метод не обращается к сети. Он только проверяет полноту конфигурации, поэтому вы можете использовать его как дымовой тест на этапе развёртывания.

  • /integrations/cloudflare/configuration/ — все параметры конфигурации.
  • /integrations/cloudflare/quickstart/ — выполните первую отрисовку.
  • /integrations/cloudflare/boot-and-discovery/ — подключите мост в контейнер фреймворка.