En Laravel, una interfaz es un contrato sobre qué métodos se usarán en una clase específica. En realidad, las interfaces no son específicas de Laravel, ni siquiera de PHP nativo para el caso. Dado que hemos estado en una buena racha con Laravel, hablaremos sobre interfaces en Laravel. Investiguemos qué son las interfaces y por qué podríamos querer usarlas, ¡saltemos!


¿Cuándo querría usar una interfaz?

Recordemos nuestro artículo Inversión de control en el que examinamos cómo y por qué el contenedor de IoC en Laravel es una gran cosa. Tuvimos un Caren ese ejemplo. Con el tiempo, tal vez creamos una gran aplicación que hace un uso intensivo de esa Carclase y nuestro código se basa en esa clase en muchos lugares de la aplicación. Bueno, adivina qué, acabas de conseguir una gran promoción y pronto estarás conduciendo uno nuevo PorcheNecesitas cambiar esa Carclase por la nueva PorcheTendrá que examinar todo el código fuente e intentar averiguar cómo funciona la API de esa clase. Puede que lo hagas bien, puede que no. Bueno, eso apesta! En un caso como este, una interfaz le habría ahorrado mucho tiempo y esfuerzo.


¿Cómo creamos una interfaz?

Crear una interfaz es muy fácil. Se parece a una clase normal, pero en su lugar usamos la palabra clave de interfaz . En lugar de crear una Carclase, o una Subaruclase o una Porcheclase, primero podemos comenzar creando un CarInterface:

Crea la interfaz

¡Increíble! Esto le dice a nuestro código que podemos tener cualquier tipo de auto que queramos, siempre que implemente un método start() gas()brake()Esta es la API o contrato de la interfaz.

Cree una clase que implemente la interfaz

Esto también es bastante sencillo. Todo lo que tenemos que hacer es crear una clase como lo haríamos normalmente, pero debemos asegurarnos de agregar la implementspalabra clave a nuestra definición:


¡Empiece a usar su interfaz!

Oh, hombre, eso fue genial : configuramos nuestro CarInteracey tenemos una clase que lo implementa, estamos preparando nuestra aplicación para el futuro y asegurándonos de que también tengamos capacidad de prueba, ya que podemos intercambiar instancias fácilmente dentro y fuera de nuestra aplicación . Probemos a este cachorro:

Ut Oh, Debbie Downer en la escena. ¡Vaya, hubo un error! Illuminate Container BindingResolutionException Target [CarInterface] is not instantiable. Ok, hicimos un boo boo. Parece que no podemos instanciar directamente una interfaz. ¡Oh si! ¡Necesitamos unirlo primero!

Vincula tu interfaz

Podemos vincular fácilmente nuestra interfaz a la aplicación, como agregando App::bind('CarInterface', 'Subaru');en el código. Veamos todo en acción:

Excelente. Aquí, creamos CarInterface, definimos una Subaruclase basada en esa interfaz, la vinculamos a nuestra aplicación y luego la usamos en cualquier lugar que queramos en nuestro código.

Implementaciones de intercambio

Hemos hecho un gran trabajo y, gracias a nuestro arduo trabajo, conseguimos ese ascenso. Con él, viene uno nuevo Porchey queremos hacer uso de él de inmediato. Hagámoslo:

Velocidad. Yo soy Speed. Bien, obtuviste el tuyoPorchey está funcionando muy bien gracias a nuestro contrato a través delCarInterfaceque habíamos establecido inicialmente.

Nota: También puede inyectarlos directamente en sus controladores así:

Lo que esté vinculado a la interfaz es la clase a la que tendrá acceso.

Con esto concluye nuestra primera serie sobre el gran marco de Laravel. Hay muchos recursos disponibles para usted en su viaje de Laravel, uno de ellos es la fuente en sí http://laravel.com/ y también los últimos acontecimientos, noticias, podcasts y tutoriales de Laravel en Laravel News, asegúrese de darles una ¡visitar!