Post Top Ad

Your Ad Spot

viernes, 4 de septiembre de 2020

Cómo crear comandos de consola Laravel Artisan

 Cómo crear comandos de consola Laravel Artisan

Parte de trabajar con Laravel no es solo crear la funcionalidad basada en web o enfocada en HTTP, sino también aprovechar Artisan. Artisan es la parte de su aplicación que opera desde la línea de comandos. Si está acostumbrado a aplicaciones basadas en interfaces de usuario estrictamente gráficas, Artisan será un poco comprensivo al principio. Sin embargo, con el tiempo, comenzará a apreciar lo mucho que puede lograr mediante comandos muy simples que escribe en la consola. Es posible que ya esté familiarizado con cosas como crear migraciones, borrar la caché, generar código repetitivo para controladores, eventos, trabajos, middleware, pruebas y más. Todo esto se logra a través de Artisan. Ahora viene la parte divertida, también puede crear sus propios comandos personalizados que se agregarán a la lista de comandos de Artisan en su solicitud. Veamos cómo.


php artisan inspire

Primero, echaremos un vistazo al inspirador generador de citas que viene con Laravel. Para probarlo, tuvimos que descomentar una línea en la $commandspropiedad protegida de la clase Kernel . Si desea seguir adelante, busque su Kernel.php app/Consoley debería verse así.

Con esto, hemos activado la capacidad de usar este comando. En otras palabras, ahora está registrado. Sigamos adelante y probémoslo.

vagrant @ homestead: ~ / Code / lpg $ php artisan inspire
Se necesita muy poco para tener una vida feliz. - Marcus Antoninus

vagrant @ homestead: ~ / Code / lpg $ La php artisan inspire
simplicidad es la esencia de la felicidad. - Cedric Bledsoe

vagrant @ homestead: ~ / Code / lpg $ php artisan inspire
El que está contento es rico. - Laozi

Así que esto está bastante bien. Activamos la capacidad de usar este comando y lo probamos. Podemos ver en el resultado anterior que obtuvimos algunas citas inspiradoras. Como ejercicio simple, digamos que desea crear su propio generador de cotizaciones y ejecutarlo desde la línea de comandos. ¿Cómo lo harías tú? Bueno, resulta que es bastante fácil, intentémoslo.


php artisan make: consola

Lo primero que harás es usar el comando php artisan make:consoledel directorio raíz de tu proyecto Laravel. Este suele ser el nombre de su proyecto. En nuestro caso, todos nuestros archivos de Laravel están contenidos en el lpgdirectorio, por lo que puede ver que ejecutamos artisan desde esta ubicación en los ejemplos anteriores. Aquí es donde vive su archivo artisan.php real, y este es el archivo que realmente está ejecutando cuando lo ejecuta php artisanSí, esta es una segunda naturaleza para los desarrolladores más experimentados, pero para los recién llegados a la línea de comandos y / o Laravel, esta información les ayudará. De todos modos, al correrphp artisan make:consoleesperará el parámetro de nombre. Si intenta ejecutar el comando sin él, obtendrá un error como "[Symfony \ Component \ Console \ Exception \ RuntimeException] No hay suficientes argumentos (falta:" nombre ")." Aquí está nuestro intento de crear una nueva clase de comando de consola.

vagrant @ homestead: ~ / Code / lpg $ php artisan make:console QuoteGenerator
Comando de consola creado con éxito.

Parece que esto funcionó. Si ahora nos registramos app/Console/Commands, encontraremos un nuevo archivo de clase de QuoteGenerator.php y contiene esta plantilla para nosotros.

Podrías estar pensando, está bien, ¿qué hago con esto? Vamos a empezar de forma muy simple. Lo primero que debe hacer es modificar la propiedad de la firma. Esto es lo que determina lo que ve como comando cuando ejecuta php artisanCambie esa firma por la siguiente.

¡Excelente! Ahora, registremos o activemos este comando. Para hacer esto, navegue a app / Console / Kernel.php y agregue la entrada para esta clase recién generada a la matriz $ commands así.

Nuestro comando ahora está registrado y disponible para su uso. Para verlo en el menú, simplemente ejecute php artisan list quote.

vagrant @ homestead: ~ / Code / lpg $ php artisan list quote
Laravel Framework versión 5.2.20

Uso:
comando [opciones] [argumentos]

Opciones:
-h, –help Mostrar este mensaje de ayuda
-q, –quiet No generar ningún mensaje
-V, –version Mostrar esta versión de la aplicación
–ansi Forzar salida ANSI
–no-ansi Desactivar salida ANSI
-n, –no-interacción Hacer no haga ninguna pregunta interactiva
–env [= ENV] El entorno en el que debe ejecutarse el comando.
-v | vv | vvv, –verbose Aumenta la verbosidad de los mensajes: 1 para salida normal, 2 para
salida más detallada y 3 para depuración

Comandos disponibles para el espacio de nombres "quote":
quote: generate Descripción del comando

Nota: Podemos ver en el resultado anterior que Laravel ahora es consciente de unquote:generatecomando. Nuestro comando todavía tiene una descripción genérica. Cambiemos eso dando una descripción personalizada de lo que hará nuestro comando. Todo lo que tenemos que hacer es actualizar lapropiedad $ description en nuestra clase QuoteGenerator a algo así.

Con esta actualización, podemos comprobarlo en la consola una vez más.

vagrant @ homestead: ~ / Code / lpg $ php artisan list quote

Comandos disponibles para el espacio de nombres "quote":
quote: generate Genera una cotización aleatoria.

Observe que nuestra nueva descripción de comando ahora está activa.


Agregar lógica para manejar ()

En este momento, nuestro comando recién creado no hace mucho nada. Probémoslo.

vagrant @ homestead: ~ / Código / lpg $ php artisan quote:generate
vagrant @ homestead: ~ / Código / lpg $

No pasó nada. Estamos de vuelta en la línea de comandos sin ningún efecto. El lugar para agregar lógica a su comando es el handle()método de su clase recién creada. Si navegamos a nuestra clase app / Console / Commands / QuoteGenerator.php, encontramos que tiene una función pública llamada handle()Aquí es donde ocurre la acción. Cuando se ejecuta su comando, se procesará cualquier lógica contenida en esta función. Queríamos crear algunas citas y mostrarlas al azar en la consola. Agreguemos algo de lógica para hacer esto. Nos inspiraremos en iamdeveloper para impulsar nuestras citas.

¡Echale un vistazo!
vagrant @ homestead: ~ / Code / lpg $ php artisan quote:generate
El proceso de desarrollo de software no puedo solucionar esta * crisis de confianza * * cuestiona carrera * * cuestiona la vida * oh, fue un error tipográfico, genial

vagrant @ homestead: ~ / Code / lpg $ php artisan quote:generate
Nunca confíe en un desarrollador con traje.

vagrant @ homestead: ~ / Code / lpg $ php artisan quote:generate
Dale a un hombre un pescado y lo alimentarás por un día. Enséñale a pescar y lo alimentarás para toda la vida. Dale $$ a una startup y lo desperdiciarán.

vagrant @ homestead: ~ / Code / lpg $ php artisan quote:generate
“Los 100 mejores marcos de JavaScript de 2015 ″ ಠ_ಠ esto es un problema.

vagrant @ homestead: ~ / Code / lpg $ php artisan quote:generate
camarero, camarero déjame adivinar, ¿hay una mosca en tu sopa? no, solo quería decir que uso Vim


Personalizar la firma del comando con argumentos y opciones

Así que hemos creado con éxito nuestro propio comando artesanal. Una cosa que dejamos fuera, al menos hasta ahora, es el concepto de argumentos y opciones en la firma del comando. Con nuestro generador de cotizaciones actual, simplemente ejecutamos el comando y genera una cotización. Personalicemos el comando para que se dirija al usuario que lo está ejecutando. Esta es una característica realmente hábil, ya que todo lo que necesita hacer es actualizar la cadena contenida dentro de la $signaturepropiedad de su clase de comando. El siguiente ejemplo le permite especificar un argumento de nombre, o si no, establecer el valor predeterminado en "amigo".

Hacemos uso de este argumento en nuestro handle()método así.

Probándolo, podemos ver que funciona.
vagrant @ homestead: ~ / Code / lpg $ php artisan quote:generate Leo
Hola Leo, mira esto: “Los 100 mejores marcos de JavaScript de 2015 ″ ಠ_ಠ esto es un problema.

vagrant @ homestead: ~ / Code / lpg $ php artisan quote:generate Katie
Hola Katie, mira esto: gerente de proyecto: sé suficiente codificación para ser peligroso * guiños * literalmente arruina todo el código base

vagrant @ homestead: ~ / Code / lpg $php artisan quote:generate Jim
Hola Jim, mira esto: Nunca confíes en un desarrollador que lleva traje.

Si omitimos el argumento del nombre, aún funciona.
vagrant @ homestead: ~ / Code / lpg $ php artisan quote:generate
Hola amigo, mira esto: El proceso de desarrollo de software no puedo solucionar esta * crisis de confianza * * preguntas carrera * * preguntas vida * oh, fue un error tipográfico, genial


Opciones de integración

También podemos hacer uso de opciones en el comando artesanal. Agreguemos una opción para personalizar el saludo para la persona que ejecuta el comando.

Ahora podemos integrar esto en nuestro método handle () así.

Al realizar una prueba rápida, podemos ver que funciona bien.
vagrant @ homestead: ~ / Code / lpg $ php artisan quote:generate --greeting="YOU GOTTA SEE THIS"
Hola amigo, TIENES QUE VER ESTO: “Hecho con amor”, lo llamo BS.


Resumen de cómo crear comandos de consola Laravel Artisan

En este tutorial, vimos cómo crear nuestros propios comandos de consola artesanales con el marco de Laravel. Vimos que podemos arrancar fácilmente el texto estándar para esto con el comando Una vez que creamos la clase, necesitamos completarla y las propiedades que cubrimos. Al agregar lógica al método, podemos determinar lo que el comando realmente hace por nosotros. Una vez que todo esto esté en su lugar, no podemos olvidar encender o registrar el comando dentro del archivo Kernel.php de Console. Además de estas tareas básicas, echamos un vistazo a la gran capacidad de definir argumentos y opciones de una manera muy sencilla directamente en la propiedad.php artisan make:console name$signature$descriptionhandle()$signature

No hay comentarios.:

Publicar un comentario

Dejanos tu comentario para seguir mejorando!

outbrain

Páginas