Cache
To use caching your WebService needs to implement \CuyZ\WebZ\Core\Cache\WithCache
:
use CuyZ\WebZ\Core\Cache\WithCache;
use CuyZ\WebZ\Core\WebService;
class GetPlace extends WebService implements WithCache
{
public function cacheLifetime(): int
{
// TTL is in seconds
// If the TTL is lower or equal to 0, the cache is disabled
return 60;
}
protected function payload(): object { ... }
public function parse(array $data): object { ... }
}
You also need to configure a cache store implementing PSR-16 (Simple Cache).
You can find one on Packagist.
For example with symfony/cache:
use CuyZ\WebZ\Core\Bus\WebServiceBus;
use CuyZ\WebZ\Http\HttpTransport;
use CuyZ\WebZ\Soap\SoapTransport;
use Symfony\Component\Cache\Adapter\ArrayAdapter;
use Symfony\Component\Cache\Psr16Cache;
$pool = new Psr16Cache(new ArrayAdapter());
$bus = WebServiceBus::builder()
->withTransport(new HttpTransport())
->withTransport(new SoapTransport())
->withCache($pool)
->build();
$place = $bus->call(new GetPlace(123));
// This call comes from the cache
$place = $bus->call(new GetPlace(123));
echo $place->name();