İçeriğe geç

NextPDF Cloudflare ön yükleme ve keşif

Köprü, kendi servis sağlayıcısını, paketini (bundle) veya otomatik keşif kancasını içermez. Açık kuruculara sahip final sınıflardan oluşan bir kümedir. Burada “keşif”, enjekte edilecek iş ortaklarını seçip bunları çerçevenizin konteynerine bağlamak anlamına gelir. Bu sayfa söz konusu bağlantı düzenini açıklar. Pakette bulunmayan bir kayıt mekanizması varsaymaz.

Siz CloudflareHtmlRenderer sınıfını oluşturursunuz; onu keşfetmezsiniz. Bağımlılıkları PHP Standard Recommendation (PSR) sözleşmeleridir: PSR-18, PSR-17 ve PSR-3’ün yanı sıra paketin kendi yapılandırma ve sözleşme türleri. Bu iş ortaklarını oluşturabilen herhangi bir çerçeve, işleyiciyi de oluşturabilir. Paket yalnızca PSR sözleşmelerine bağımlıdır; tests/Unit/Architecture/PsrConformanceTest.php testi, işleyiciye herhangi bir somut istemcinin bağlanmadığını doğrular. Ana uygulamanız, mevcut HTTP istemci bağlamasını değiştirmeden yeniden kullanabilir. Laravel, Symfony ve CodeIgniter NextPDF adaptörleri aynı PSR-18 bağlamasını yeniden kullanır. Bu paket, kendine ait herhangi bir çerçeve paketi eklemez.

İş ortaklarını CloudflareHtmlRenderer kurucusuyla eşleşecek şekilde şu sırayla çözümleyin:

  1. PSR-18 ClientInterface arayüzünü uygulamanın mevcut HTTP istemci bağlamasından çözümleyin.
  2. PSR-17 RequestFactoryInterface ve StreamFactoryInterface arayüzlerini çözümleyin; sabitlenmiş cURL taşımasını kullanmak istediğinizde ResponseFactoryInterface arayüzünü de çözümleyin.
  3. Çözümlenmiş yapılandırmadan bir CloudflareRendererConfig oluşturun (“Yapılandırma çözümleme sırası” bölümüne bakın).
  4. İsteğe bağlı olarak bir PSR-3 LoggerInterface, bir LocalRendererFactoryInterface ve açık bir HtmlSecurityPolicyInterface çözümleyin.
  5. Bu iş ortaklarıyla CloudflareHtmlRenderer sınıfını oluşturun.

Bu adımların hiçbiri ağ bağlantısı kurmaz. İlk ağ etkileşimi, render() veya isAvailable() çağrısını yaptığınızda gerçekleşir.

Temsili bir bağlama (çerçeveden bağımsız sözde kod):

<?php
declare(strict_types=1);
use NextPDF\Cloudflare\CloudflareHtmlRenderer;
use NextPDF\Cloudflare\CloudflareRendererConfig;
use Psr\Http\Client\ClientInterface;
use Psr\Http\Message\RequestFactoryInterface;
use Psr\Http\Message\ResponseFactoryInterface;
use Psr\Http\Message\StreamFactoryInterface;
use Psr\Log\LoggerInterface;
$container->singleton(CloudflareHtmlRenderer::class, function ($c) {
return new CloudflareHtmlRenderer(
config: CloudflareRendererConfig::fromArray($c->get('config')['cloudflare']),
httpClient: $c->get(ClientInterface::class),
requestFactory: $c->get(RequestFactoryInterface::class),
streamFactory: $c->get(StreamFactoryInterface::class),
logger: $c->get(LoggerInterface::class),
responseFactory: $c->get(ResponseFactoryInterface::class),
);
});

Paket, ortam değişkenlerini kendisi okumaz. Eksiksiz oluşturulmuş bir CloudflareRendererConfig kabul eder. Ana uygulamada yapılandırmayı şu sırayla çözümleyin: önce ortam değişkenleri, ardından yayımlanmış yapılandırma veya çerçeve yapılandırması, ardından kurucuda yerleşik paket varsayılanları (/integrations/cloudflare/configuration/ adresinde belgelenmiştir). CloudflareRendererConfig::fromArray(), eksik veya yanlış türlendirilmiş her anahtar için kurucu varsayılanlarını uygular; böylece kısmi bir yapılandırma dizisi başarısız olmak yerine öngörülebilir biçimde varsayılana döner.

CloudflareRendererConfig::isValid(), ön yükleme aşaması sinyalidir. Hem workerUrl hem de apiToken değerlerinin boş olmadığını denetleyen ve hiçbir ağ çağrısı yapmayan saf bir kontroldür; bu nedenle onu dağıtım geçidi olarak kullanabilirsiniz. Çalışma zamanı sinyali CloudflareHtmlRenderer::isAvailable() metodudur; bu metot, kimliği doğrulanmış bir HTTP HEAD isteği yapar ve true (durum 500 değerinin altındaysa) ya da false (aksi durumda; hiçbir zaman istisna fırlatmadan) döndürür; bu nedenle onu hazırlık denetimi olarak kullanabilirsiniz. Başarılı bir denetim yalnızca bir ipucudur, garanti değildir: sonrasında gelen POST isteği yine de başarısız olabilir.

  • /integrations/cloudflare/integration/ — eksiksiz entegrasyon adım adım kılavuzu.
  • /integrations/cloudflare/overview/ — köprünün ne olduğu ve hangi sınırı aştığı.
  • /integrations/cloudflare/configuration/ — her alan ve varsayılan değer.
  • /integrations/cloudflare/security-and-operations/ — sabitlenmiş taşımanın ne zaman etkinleştiği.