En la clase anterior les expliqué cómo podemos hacer que nuestros sistemas sean más flexible con el uso de interfaces.

En teoría, una interfaz, en la programación orientada a objetos, nos permite que podamos crear diferentes implementaciones de una clase o componente, por ejemplo diferentes implementaciones de un repositorio.

stubs-interfaces

Otros tutoriales por lo general se detienen aquí,  porque en la práctica no es tan sencillo, pero sí es posible y yo hoy se los demostraré con el siguiente videotutorial, donde vamos a crear un repositorio de secciones que va a usar colecciones (arrays) en vez de bases de datos y Eloquent. Pero antes de comenzar veremos un par de conceptos importantes:

¿Qué es un Stub?

Este tipo de clases que emula el comportamiento de otra clase, se llaman Stubs, de acuerdo a Wikipedia: un Stub es un código sustituto de alguna otra funcionalidad.

¿Por qué son importantes los stubs?

Consideren el siguiente ejemplo: Una empresa de turismo quiere hacer un proyecto web que les muestre a sus visitantes sitios sugeridos para visitar de acuerdo al clima. Para conocer el clima se conectarán con el API de un centro meteorológico, sabemos qué tipos de datos nos retornaría esta API pero aún no disponemos de ella. ¿Qué hacer? ¿Detenemos el desarrollo hasta conocer el API? No! Creamos Stubs:

Podríamos crear una interfaz llamada WeatherRepository que defina los métodos que necesitamos, por ejemplo:

interface WeatherRepository {
    public function getWeeklyWeatherForecast($year, $weekNumber);
}

Luego crear una clase StubWeatherRepository que implemente la interfaz WeatherRepository y aunque no se conecte con ninguna API igual retorne ciertos valores posibles del clima, por ejemplo:

class WeatherRepository {
    public function getWeeklyWeatherForecast($year, $weekNumber)
    {
        if ($city == 'Maracay') {
            return ['monday' => rand(30, 38), 'tuesday' => rand(28, 36)...]; 
        } elseif ($city == 'Merida') {
            return ['monday' => rand(18, 26)...]; 
        } else {
            return [...];
        }
    }
}

Luego de implementar esta clase «Stub», podemos continuar construyendo el sistema, y mostrarle avances al cliente, ¡Incluso antes de tener todos los requerimientos! ¿Cuán genial es esto? Exacto: es super genial, y es lo que aprenderemos en este video.

Además veremos cómo trabajan las Colecciones de Laravel, algunos métodos mágicos de PHP como son __isset y __get, y otros tips sobre Behavior Driven Development (BDD) con Codeception y programación orientada a objetos que quizás no conocías! Así que busca algunos snacks, ponte cómodo y acompáñame en los próximos 45 minutos de esta super clase de POO:

Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.

Lección anterior Aprende qué son las interfaces, cómo usarlas y definirlas en PHP y Laravel Lección siguiente Aprende programación orientada a objetos: Patrón Factory