![image][1]В [первой][2] и [второй][3] частях серии статей мы проделали немного работы по разделению того кода и тех лишних действий, которые мы понаписали в одной функции. В основном же мы имели дело с классами HttpClient и Cache, и их разными реализациями, чтобы написать тестируемый клиент для апи кисок.
#### Представление данных
До этого мы обращали много внимания на поведение и общую структуру кода, но забывали про на данные, с которыми имеем дело. Сейчас у нас все является строками, включая возвращаемое значение CatApi::getRandomImage(). То есть вызывая этот метод, мы «знаем», что получим строку. Говорю «знаем», так как PHP может вернуть все — объект, ресурс, массив и т.д. Тем не менее, хоть в случае с RealCatApi::getRandomImage() мы и можем быть уверенны, что нам придет строка, так как мы явно приводим значение к ней, мы не можем точно сказать, что эта строка будет «полезна» (валидна) для того, кто вызвал этот метод: это может быть и пустая строка, строка, которая не содержит URL (типа «I am not a URL») и так далее. [Читать дальше →][4]
[1]:
https://habrastorage.org/getpro/habr/post_images/f69/648/0c4/f696480c490fa4705e609f9dffb5bca3.jpg "Vesselin Nenkov - Girl with Cat"
[2]:
http://habrahabr.ru/post/262995/
[3]:
http://habrahabr.ru/post/263139/
[4]:
http://habrahabr.ru/post/263333/#habracut