ghostcompiler / laravel-cloudflare
Production-ready Laravel SDK for the Cloudflare API v4
Package info
github.com/ghostcompiler/laravel-cloudflare
pkg:composer/ghostcompiler/laravel-cloudflare
v1.0.6
2026-06-17 10:31 UTC
Requires
- php: ^8.2 || ^8.3 || ^8.4 || ^8.5
- guzzlehttp/guzzle: ^7.0
- illuminate/contracts: ^11.0 || ^12.0 || ^13.0
- illuminate/support: ^11.0 || ^12.0 || ^13.0
Requires (Dev)
- laravel/pint: ^1.13
- orchestra/testbench: ^9.0 || ^10.0 || ^11.0
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^10.0 || ^11.0 || ^12.0 || ^13.0
- rector/rector: ^1.0
- vimeo/psalm: ^5.9
README
Laravel Cloudflare SDK
A premium, feature-rich PHP SDK and Laravel integration for the Cloudflare API v4, featuring rate-limit handling, automatic retries, and concurrent batch operations.
Features
- 100% Endpoint Coverage: Complete implementation of all zones, DNS, Workers, KV, R2, D1, Access, Turnstile, and 30 resource managers.
- Fail-Safe Retries & Backoff: Robust exponential backoff and rate-limit parsing handling
Retry-Afterresponse headers automatically. - Concurrently Pooled Processing: Execute calls asynchronously or concurrently in batches.
- Dynamic Filter Builder: Fluent query-building for filtering, page indexing, and sorting.
- Type-Safe DTOs: Automated data hydration into standard PHP DTO structures.
- Custom Exceptions: Specialized mapping of Cloudflare API status codes and error formats.
Installation
Install the package via Composer:
composer require ghostcompiler/laravel-cloudflare
Publish the configuration file:
php artisan vendor:publish --provider="Vendor\Cloudflare\Providers\CloudflareServiceProvider" --tag="config"
Add your Cloudflare credentials to your .env file:
CLOUDFLARE_TOKEN=your_api_token_here # Or legacy email/key credentials CLOUDFLARE_EMAIL=your_email_here CLOUDFLARE_API_KEY=your_global_api_key_here CLOUDFLARE_TIMEOUT=30 CLOUDFLARE_RETRIES=3 CLOUDFLARE_RETRY_BACKOFF=100 CLOUDFLARE_LOGGING_ENABLED=true
Usage Examples
Zones
Listing Zones
use Vendor\Cloudflare\Facades\Cloudflare; $zones = Cloudflare::zones() ->filter(['status' => 'active']) ->perPage(50) ->page(1) ->get(); foreach ($zones as $zone) { echo $zone->name . ': ' . $zone->status . "\n"; }
DNS Records
Managing DNS Records for a Zone
// Create a new record $record = Cloudflare::dns()->create('zone_id_here', [ 'type' => 'A', 'name' => 'subdomain', 'content' => '1.2.3.4', 'proxied' => true, 'ttl' => 1 ]); // Update the record Cloudflare::dns()->update('zone_id_here', $record->id, [ 'type' => 'A', 'name' => 'subdomain', 'content' => '5.6.7.8', 'proxied' => false, 'ttl' => 120 ]); // Delete the record Cloudflare::dns()->delete('zone_id_here', $record->id);
Worker Scripts
Uploading and Managing Workers
Cloudflare::workers()->upload('account_id_here', 'my-script', 'console.log("Hello Worker");');
License
The MIT License (MIT). Please see License File for more information.
Development Environment
Built using ServBay
- Mac M4 Tested
- macOS Apple Silicon
- Powered by ServBay