Consume the CoolRunner API v3 in PHP.
composer require setono/coolrunner-php-sdk
<?php
use Setono\CoolRunner\Client\Client;
use Setono\CoolRunner\DTO\Collection;
use Setono\CoolRunner\DTO\Servicepoint;
require_once '../vendor/autoload.php';
$client = new Client('USERNAME', 'TOKEN');
$servicepoints = $client
->servicepoints()
->find('gls', 'DK', 'Stigsborgvej 60 4. th.', '9400', 'Nørresundby')
;
foreach ($servicepoints as $servicepoint) {
echo $servicepoint->name . "\n";
echo $servicepoint->address->street . "\n";
echo $servicepoint->address->zipCode . ' ' . $servicepoint->address->city . "\n";
echo $servicepoint->address->countryCode . "\n\n";
}
will output something like:
Min Købmand Nørre Uttrup
Nørre Uttrup Torv 15
9400 Nørresundby
DK
Shell 7-Eleven Nørresundby
Østergade 27-29
9400 Nørresundby
DK
Next-Data.Dk
Østerbrogade 79
9400 Nørresundby
DK
...
Internally this library uses the CuyZ/Valinor library which is particularly well suited for turning API responses in DTOs. However, this library has some overhead and works best with a cache enabled.
When you instantiate the Client
you can provide a MapperBuilder
instance. Use this opportunity to set a cache:
<?php
use CuyZ\Valinor\Cache\FileSystemCache;
use CuyZ\Valinor\MapperBuilder;
use Setono\CoolRunner\Client\Client;
use Setono\CoolRunner\DTO\Collection;
use Setono\CoolRunner\DTO\Servicepoint;
require_once '../vendor/autoload.php';
$cache = new FileSystemCache('path/to/cache-directory');
$client = new Client('USERNAME', 'TOKEN', (new MapperBuilder())->withCache($cache));
You can read more about it here: Valinor: Performance and caching.