Esta es una traducción libre de Refactoring the Cat API client – Part I
Mattias Noback tenía la idea de hacer una serie de videos sobre «Principles of Package Design book» pero finalmente en vez de videos hizo una serie de post con el material que tenía pensado presentar en los videos.

Para empezar esta es una pequeña pieza de código:
class CatApi
{
public function getRandomImage()
{
if (!file_exists(__DIR__ . '/../../cache/random')
|| time() - filemtime(__DIR__ . '/../../cache/random') > 3) {
$responseXml = @file_get_contents(
'http://thecatapi.com/api/images/get?format=xml&type=jpg'
);
if (!$responseXml) {
// the cat API is down or something
return 'http://cdn.my-cool-website.com/default.jpg';
}
$responseElement = new \SimpleXMLElement($responseXml);
file_put_contents(
__DIR__ . '/../../cache/random',
(string)$responseElement->data->images[0]->image->url
);
return (string)$responseElement->data->images[0]->image->url;
} else {
return file_get_contents(__DIR__ . '/../../cache/random');
}
}
}
Como se puede adivinar, la función getRandomImage
devuelve una URL de la imagen aleatoria (y que existe) de Cat API. Cuando llamamos a la función en dentro de una ventana de tiempo de 3 segundos, se devuelve la misma URL para que el servicio sea más rápido, así como para no abusar de Cat API.
Continúa leyendo «Refactorizando el cliente de «Cat API» – Parte 1″