コンテンツにスキップ

NextPDF Cloudflare ブリッジのインストール

Composer でパッケージをインストールします。続いて、PSR-18 の HTTP クライアントと PSR-17 のファクトリ実装を追加します。ブリッジはインターフェイスのみを宣言し、具体的な HTTP クライアントは同梱しません。

ブリッジは、以下を composer.jsonrequire セクションから読み取ります:

依存関係制約
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 は、4 つの PSR-17 ファクトリインターフェイスすべてと PSR-18 クライアントを提供します。Symfony HttpClient や Buzz、その他の準拠したスタックも同様に利用できます。このパッケージは設計上、ベンダー非依存です。tests/Unit/Architecture/PsrConformanceTest.php のテストでは、このパッケージが具体的なクライアントではなく PSR 契約のみに依存していることを検証します。

Worker に到達できず、フォールバックが有効になっている場合、ブリッジは処理をローカルレンダラーに委譲できます。そのレンダラーは NextPDF\Cloudflare\Contract\LocalRendererFactoryInterface を介して指定します。composer.jsonsuggest ブロックには、ファーストパーティの実装が記載されています:

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() は、workerUrlapiToken の両方が空でない場合に true を返します。このメソッドはネットワークに接続しません。これは構成が揃っているかどうかだけを調べる純粋なチェックであり、デプロイ時のスモークテストに適しています。

  • /integrations/cloudflare/configuration/ — 設定項目の全体像。
  • /integrations/cloudflare/quickstart/ — 最初のレンダリング。
  • /integrations/cloudflare/boot-and-discovery/ — フレームワークのコンテナーへのブリッジの組み込み。