https://github.com/cloudflare/cloudflare-php
I will continue to fix bugs but there will be no futher development on this library given Cloudflare have released an official package.
You can read more about the official package here:
- https://blog.cloudflare.com/cloudflare-php-api-binding/
- https://support.cloudflare.com/hc/en-us/articles/115001661191
The documentation for the API can be found at https://api.cloudflare.com, I will try to update this as soon as possible when new features are added to the API. If I miss one please submit a pull request.
If you spot an issue with the package just let me know via issues but please include as much detail as possible, ideally with code examples, environment information etc.
Documentation for this package can be viewed here: https://jamesryanbell.github.io/cloudflare/
Installation should be done via composer, details of how to install composer can be found at https://getcomposer.org/
$ composer require jamesryanbell/cloudflare
The current feature list includes:
- DNS Records
- Zones
- Web Application Firewall (WAF)
- CloudFlare IPs
- User Administration
- Virtual DNS Management
- Organization Administration
- Railgun administration
- Keyless SSL
- Origin CA
- Traffic Manager [BETA]
- Traffic Control
In situations where you want to make multiple calls to the API across different services it's easier to create a connection to the api first and then pass that around the other services e.g.
use Cloudflare\Zone\Dns;
// Create a connection to the Cloudflare API which you can
// then pass into other services, e.g. DNS, later on
$client = new Cloudflare\Api('email@example.com', 'API_KEY');
// Create a new DNS record
$dns = new Cloudflare\Zone\Dns($client);
$dns->create('12345678901234567890', 'A', 'name.com', '127.0.0.1', 120);
If you are just performing a single action then you can connect to the API directly when you instantiate the class e.g.
use Cloudflare\Zone\Dns;
// Create a connection to the Cloudflare API which you can
// then pass into other services, e.g. DNS, later on
$dns = new Cloudflare\Zone\Dns('email@example.com', 'API_KEY');
$dns->create('12345678901234567890', 'TXT', 'name.com', '127.0.0.1', 120);
use Cloudflare\Zone\Pagerules;
// Define your targets
// Currently you can only specify one URL per page rule but this implementation matches the API
// so I am leaving it for now in the assumption they are planning to add multiple targets.
$targets = [
[
'target' => 'url',
'constraint' =>
[
'operator' => 'matches',
'value' => 'http://example.co.uk/*'
]
]
];
// Define your actions
// Each action is held within it's own array.
$actions = [
[
'id' => 'always_online',
'value' => 'on'
]
];
$pagerules = new Cloudflare\Zone\Pagerules('email@example.com', 'API_KEY');
$pagerules->create($zoneId, $targets, $actions);
MIT