graham-campbell/cloudflare-api
A Laravel/PHP client for the Cloudflare API, providing a simple, expressive wrapper for managing zones, DNS records, caching, and other Cloudflare resources through a clean, framework-friendly interface.
Architecture fit
graham-campbell/manager), a facade, and named-connection resolution — everything below that is Cloudflare's own SDK. Framing it correctly shrinks the decision from "adopt a vendor" to "do we call the Cloudflare API from our app, and at what abstraction level."config/app.php — i.e., Laravel 5.0 through 5.4. Auto-discovery (5.5+) and anything modern are out of scope.CloudFlareApi::connection('production') vs 'staging' lets one app hold separate credential sets. That pattern is worth carrying into whatever replaces it.Integration feasibility
vendor:publish, two env vars. 1–2 engineer-days, most of it staging credential verification and dependency-conflict resolution, not code.minimum-stability: alpha bleeding into the whole Composer graph, PHP 7 / Guzzle 6 assumptions, and expected Guzzle 7 conflicts if anything else in the app is modern.Technical risk
GrahamDeprecated namespace, with 0 stars, 0 dependents, score 0.3, and a final 0.7.0-alpha whose headline change is "upgraded to Laravel 5.0." That is a maintainer stating retirement.email + key, producing global X-Auth-Email/X-Auth-Key headers. There is no evidence of scoped API Token (Authorization: Bearer) support. Practically: one leaked env var can rewrite DNS for every zone on the account. Most security postures today reject that outright.success: false with HTTP 200, pagination is not automatic, and zone activation is asynchronous.Key questions
Provider class references before any composer update — that rename is a blocking migration item.cloudflare/sdk actually show us?Stack fit
Migration path
cloudflare/sdk behind a thin internal adapter (e.g. CloudflareDnsService, CloudflareZoneService) so domain logic never couples to SDK method signatures.Compatibility
"graham-campbell/cloudflare-api": "0.7.0-alpha") or vendor as a path repository; never let minimum-stability: alpha reach the whole graph. There are no patch releases coming to justify the flexibility.config:cache swallows env changes, so key rotation requires a deploy step. That must reconcile with existing secret-rotation runbooks or it produces auth failures at the worst possible moment.Sequencing
status === 'active' with backoff, create proxied record, set SSL mode — needs a gated, retryable state machine. The state machine is the deliverable; the HTTP client is incidental.Maintenance
\Cloudflare\API\Endpoints\* classes. Do not subclass the manager — nothing merges upstream.Support
config:cache after key rotation; check ->success rather than transport status; loop result_info for pagination; poll zone activation with backoff.Scaling
ShouldQueue), never inline in a request a customer is waiting on.Failure modes
success: false with HTTP 200; nothing throws.Ramp-up
cloudflare/sdk for the custom-domain onboarding flow; treat graham-campbell/cloudflare-api as documentation only and exclude it from the dependency review.How can I help you explore Laravel packages today?