跳转到内容

安装 NextPDF Cloudflare 桥接器

使用 Composer 安装此包。随后添加一个 PSR-18 HTTP 客户端和一个 PSR-17 工厂实现。此桥接器声明这些接口;它并不捆绑任何具体的 HTTP 客户端。

此桥接器会从 composer.json 中的 require 部分读取以下信息:

依赖包版本约束
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 的静态分析,并且不附带任何分析器基线文件。

Terminal window
composer require nextpdf/cloudflare

此桥接器的构造函数需要一个 PSR-18 ClientInterface、一个 PSR-17 RequestFactoryInterface,以及一个 PSR-17 StreamFactoryInterface。如有提供,固定传输路径还会使用一个 PSR-17 ResponseFactoryInterface。任何符合规范的实现都可以使用。README 以 Guzzle 作为示例之一:

Terminal window
composer require guzzlehttp/guzzle

Guzzle 7 提供全部四个 PSR-17 工厂接口以及 PSR-18 客户端。Symfony HttpClient、Buzz 以及其他符合规范的技术栈也同样适用。此包在设计上就与供应商无关。tests/Unit/Architecture/PsrConformanceTest.php 测试会断言此包仅依赖于 PSR 契约,而不依赖于任何具体的客户端。

当 Worker 不可访问且已启用回退时,此桥接器可以委托本地渲染器处理。你需要通过 NextPDF\Cloudflare\Contract\LocalRendererFactoryInterface 提供该渲染器。suggest 块(位于 composer.json 中)指明了第一方实现:

Terminal window
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——前提是 workerUrlapiToken 两者都非空。它不会发起网络连接。这只是一项配置完整性检查,适合用于部署时的冒烟测试。

  • /integrations/cloudflare/configuration/ — 完整的配置接口。
  • /integrations/cloudflare/quickstart/ — 你的第一次渲染。
  • /integrations/cloudflare/boot-and-discovery/ — 将此桥接器接入框架容器。