Header Ads Widget

Ticker

6/recent/ticker-posts

Refactorice la herramienta Laravel Regex para usar repositorios e inyección de dependencia

Bienvenido de nuevo, pandilla, a otro episodio lleno de diversión de trabajar con Laravel por diversión y ganancias. Bueno, divertido al menos. En este episodio, analizaremos más de cerca la herramienta de expresión regular que creamos anteriormente. Es cierto que esta es una versión puramente pirateada creada para divertirse realmente. Pensé que podría ser una buena idea para nosotros aplicar el patrón de repositorio con inyección de dependencia , interfaces y espacios de nombres a esta herramienta para ver cómo lo haríamos. De esta manera, cubrimos ambos enfoques. El enfoque del hacker y el enfoque cuidadosamente planificado. John Resig dijo una vez sobre aprender a refactorizar, "Simplemente haga que algo funcione, luego podrá refactorizar". Con eso, tomaremos nuestro MVP o MVRT (Probador de expresiones regulares viables mínimas) y rediseñaremos esto para el bien de la humanidad. Vamos a ver.


Controladores Rutas y Vistas

En primer lugar, veremos el controlador que creamos para este proyecto, que es RegexController.php , el archivo routes.php y la vista. Esta es la capa superior, por así decirlo. Debajo de todo esto están los repositorios que lo hacen posible.

laravelappcontrollersRegexController.php fuente

fuente laravelapproutes.php

fuente laravelappviewsregex.blade.php

laravelappviewslayoutsmaster.blade.php fuente

¡Frio! Los archivos anteriores son prácticamente toda la aplicación (menos las tuberías de abajo), pero esto da una idea de cómo diseñar mejor el diseño de la aplicación. Nuestro primer intento, pensó que funciona, es un desastre hack. Con esta iteración, tenemos un controlador bastante limpio, un par de líneas en el archivo de rutas y un par de vistas. La funcionalidad real de la aplicación es exactamente la misma . Simplemente muestra cómo los problemas se pueden resolver con enfoques * muy * diferentes (solo desea gravitar hacia los enfoques que lo mantendrán cuerdo).


El elenco de apoyo

Gracias a Laracasts y Jeffrey Way, la comunidad de Laravel y PHP en su conjunto tiene un recurso fantástico para aprender sobre las mejores prácticas de programación y diseño de aplicaciones avanzadas. Solo quería dar un reconocimiento a quien se merece el crédito, ya que este patrón aquí está inspirado en las enseñanzas de Jeff.

Dado que vamos a aplicar el patrón de repositorio , seguiremos aproximadamente los pasos descritos en una publicación anterior sobre repositorios. Este es el esquema que seguiremos. Está ligeramente modificado de nuestra versión anterior para asegurarnos de que cubrimos todos los pasos.

1. Cree la carpeta del dominio

Este es el espacio de nombres raíz de su aplicación. Si su aplicación se llama impresionante , entonces la carpeta o directorio tiene el nombre awesomeEn este caso, nombraremos el directorio como "el dominio ", por lo que esto nos recordará a medida que trabajamos en el ejemplo que esta es la carpeta de nivel de dominio raíz.

2. Crear subdirectorios de repositorio

La mayoría de los proyectos tendrán múltiples repositorios, así que adelante, cree subdirectorios para esos también. En este ejemplo, tendremos un repositorio para nuestro procesamiento de expresiones regulares , así como un repositorio para el procesamiento de validación . Los dos directorios que usaremos son regexrepositoryvalidationrepositorypara contener nuestros archivos de repositorio de expresión regular y archivos de repositorio de validación respectivamente. Cada subdirectorio contendrá tres archivos PHP . Uno para la interfaz , uno para el repositorio real (el código que realiza el procesamiento) y otro para el proveedor de servicios de back-end .

3. Cree sus interfaces

Ahora crearemos una interfaz para cada repositorio. El repositorio de expresiones regulares utilizará RegexRepositoryInterface mientras que el repositorio de validación utilizará ValidationRepositoryInterface . Asegúrese de crear cada uno en la carpeta correcta y asigne el espacio de nombres en cada archivo. Aquí están los dos archivos que necesitamos crear.

thedomainrepositoriesregexrepositoryRegexRepositoryInterface.php fuente

thedomainrepositoriesvalidationrepositoryValidationRepositoryInterface.php fuente

4. Cree el repositorio

Con ambas interfaces creadas, ahora podemos crear el repositorio real que implementa las interfaces. Recuerde, la interfaz solo nos dice el esquema que debemos seguir en la implementación. Aquí están las dos implementaciones que creamos para las interfaces.

thedomainrepositoriesregexrepositoryRegexRepository.php fuente

thedomainrepositoriesvalidationrepositoryValidtionRepository.php fuente

5. Cree el proveedor de servicios

Dado que estamos escribiendo una interfaz en el controlador, necesitamos que Laravel sepa qué clase usar para la interfaz. Hacemos esto con los proveedores de servicios de backend que vinculan una clase a una interfaz. Estos son los dos proveedores de servicios de backend que creamos.

thedomainrepositoriesregexrepositoryBackendServiceProvider.php fuente

thedomainrepositoriesvalidationrepositoryBackendServiceProvider.php fuente

Nuevamente, con este patrón verá tres archivos por carpeta de repositorio: el archivo de interfaz, el archivo de repositorio y el archivo del proveedor de servicios de backend. Ahora estamos todos listos con los que están aquí.

6. Actualice la matriz de proveedores

Para que todo el trabajo preliminar que hemos realizado hasta ahora sea funcional, debemos agregar los proveedores de servicios de backend a la matriz de proveedores en app.phpAsí es como actualizamos el nuestro. Tenga en cuenta las dos nuevas entradas al final de la matriz.

fuente laravelappconfigapp.php

7. Actualiza Composer Dot JSON

Otro paso que debemos tomar antes de que esto funcione es configurar el espacio de nombres PSR-4 en el composer.jsonarchivo. En la sección de carga automática del composer.json, necesitamos agregar una entrada para PSR-4 . Sigue la convención de "thedomain\" : "app/thedomain", donde la información a la izquierda de los dos puntos es su espacio de nombres raíz, y la información a la derecha de los dos puntos es dónde encontrar ese espacio de nombres.

fuente laravelcomposer.json

8. Ejecute Composer Dump

¡Aún no hemos terminado! Finalmente, debemos ejecutar composer dumppara generar los archivos de carga automática para la aplicación.


Entonces, ¿funciona?

Gran pregunta, ¡averigüémoslo!


La carga de la aplicación funciona

probador de expresiones regulares laravel


Olvidar el tema funciona

validación dos de laravel regex


Olvidar el patrón funciona

validación laravel regex


Un partido o partidos exitosos funciona

éxito de laravel regex
laravel regex éxito dos

No se encontraron coincidencias obras

laravel regex no coincide

Excepción arrojada funciona

laravel regex manejó excepción

Conclusión

Eso fue muy divertido. ¡Parece que todo funciona también! Mira, hay razones para creer en los milagros. Gracias por pasar por aquí, comparte esta publicación con un amigo si quieres


Publicar un comentario

0 Comentarios