() translation by (you can also view the original English article)
Comencemos este tutorial Laravel viendo lo que dice el sitio oficial de este framework sobre los helpers:
Laravel incluye una variedad de funciones PHP globales conocidas como "helpers". Muchas de estas funciones son utilizadas por el propio framework; sin embargo, tienes la libertad de usarlas en tus propias aplicaciones si te resultan convenientes.
Básicamente, un Laravel helper es una función de utilidad incorporada que puedes llamar desde cualquier lugar dentro de tu aplicación. Si el framework principal no proporciona el helper que necesitas, tú puedes codificar tus propias clases para crear un helper de Laravel personalizado.
En este tutorial, aprenderás cómo usar Laravel para crear tu propio helper.
Los Laravel helpers
Como mencionamos al principio, al crear un proyecto Laravel tendrás a tu disposición una gran cantidad de helpers que se encuentran integrados en el núcleo de este framework. Estos se agrupan de acuerdo a la funcionalidad que proporcionan. A continuación, te presentamos una lista de grupos de Laravel helpers.
Matrices
Los helpers de este grupo proporcionan funcionalidad para manipular los elementos de una matriz. La mayoría de las veces, al trabajar con matrices es probable que necesites llevar a cabo diferentes operaciones en sus elementos. Por lo tanto, este es el grupo que debes consultar primero para ver si lo que estás buscando ya existe.
Rutas
Los Laravel helpers de esta categoría son los que me parecen de mayor utilidad. Estos devuelven la ruta completa de diferentes directorios, como los de aplicaciones, almacenamiento, configuración y similares. Apuesto a que, al crear un proyecto Laravel, harás uso de la mayoría de estos helpers en tu aplicación.
Cadenas
La manipulación de cadenas es algo inevitable en el desarrollo cotidiano de aplicaciones. Si bien es cierto que el mismo PHP proporciona una gran cantidad de funciones de manipulación de cadenas, en esta categoría seguramente encontrarás más recursos útiles.
Direcciones URL
En este grupo de Laravel helpers encontrarás muy pocos elementos, pero estos se utilizan a lo largo de la aplicación. Son útiles para generar rutas, recursos y para formar direcciones URL de acción.
Varios
Esta categoría contiene helpers que proporcionan una variedad de funciones, que van desde el registro de datos hasta la depuración y muchas más.
Para ver una referencia completa de los Laravel helpers, no hay mejor lugar que la documentación oficial.
Cómo llamar a un Laravel helper incorporado en el framework
En esta sección, te mostraré cómo usar Laravel para llamar a los helpers incorporados en este framework. Además, analizaremos un par de Laravel helpers para comprender lo que hacen y cómo puedes usarlos.
El helper Str::ucfirst
El helper Str::ucfirst
convierte el primer carácter de una cadena a mayúsculas. En el siguiente fragmento de código, puedes ver cómo usar Laravel para llamarlo desde cualquier lugar de la aplicación.
1 |
$string = Str::ucfirst('helper de Envato'); |
2 |
// $string debería contener la cadena "helper de Envato"
|
Como puedes observar, llamar a un Laravel helper es una tarea bastante sencilla.
Ahora veamos otro Laravel helper ampliamente utilizado.
El helper url()
El helper url
te ayuda a generar una URL completa para la ruta dada.
1 |
$url = url('user/profile'); |
2 |
// $url debería contener una ruta completa, como "https://localhost/user/profile"
|
Y así es como puedes usar los helpers. En la siguiente sección de este tutorial Laravel, discutiremos cómo puedes crear un helper de Laravel personalizado.
Cómo crear un helper de Laravel personalizado
Ahora tienes una comprensión básica de lo que es un Laravel helper y para qué se utiliza. En esta sección, te mostraré cómo puedes crear un proyecto Laravel y cómo construir tu propio helper personalizado para utilizarlo globalmente en tu aplicación.
Para mantener las cosas simples y fáciles de entender, vamos a crear un proyecto Laravel con un helper bastante básico, que recibirá el ID de un usuario y devolverá el nombre de este último como respuesta. Por supuesto, esto no suena sofisticado, pero creo que es suficiente para darte un ejemplo de cómo crear un helper de Laravel: recuerda que siempre puedes extender su funcionalidad para cumplir con requisitos más complejos.
En este tutorial Laravel, voy a suponer que tienes una tabla llamada users
en tu base de datos y que esta tiene al menos dos campos: userid
y username
.
La estructura de un Laravel helper
Antes de seguir adelante, echemos un vistazo rápido a los archivos que vamos a generar en el resto de este tutorial Laravel.
- app/Helpers/Envato/User.php: Es nuestro archivo de helper que contiene la lógica.
- app/Providers/EnvatoServiceProvider.php: Es un archivo de proveedor de servicios personalizado que carga nuestro archivo helper.
- config/app.php: En este archivo, declararemos nuestro proveedor de servicios personalizado y también nos ayudará a definir un alias para nuestro Laravel helper, con el fin de que no tengamos que usar el nombre de clase completo.
- routes/web.php: Este es un archivo de ruta Laravel bastante estándar en donde probaremos nuestro helper.
Crea los archivos de un Laravel helper
Al crear un proyecto Laravel, si bien puedes colocar los archivos de tu helper en cualquier lugar de tu aplicación, la forma más intuitiva y estándar sugiere que deben ir dentro de tu directorio app.
La clase User
del helper
Crea un directorio Helpers/Envato dentro de app y luego crea un archivo User.php con el siguiente contenido. Por supuesto, puedes colocarlo directamente dentro del directorio app o app/Helpers, pero proporcionar ese nivel adicional nos permite organizar nuestros helpers, lo cual es especialmente importante si vas a crear un proyecto Laravel que tenga muchos de ellos.
1 |
<?php
|
2 |
//app/Helpers/Envato/User.php
|
3 |
namespace App\Helpers\Envato; |
4 |
|
5 |
use Illuminate\Support\Facades\DB; |
6 |
|
7 |
class User { |
8 |
/**
|
9 |
* @param int $user_id User-id
|
10 |
*
|
11 |
* @return string
|
12 |
*/
|
13 |
public static function get_username($user_id) { |
14 |
$user = DB::table('users')->where('userid', $user_id)->first(); |
15 |
|
16 |
return (isset($user->username) ? $user->username : ''); |
17 |
}
|
18 |
}
|
El archivo comienza con una declaración de espacio de nombres bastante estándar:
1 |
namespace App\Helpers\Envato; |
El propósito de nuestro helper personalizado es obtener un nombre de usuario en base a un ID. Por lo tanto, necesitamos interactuar con la base de datos, y eso nos obliga a incluir la Facade DB
.
1 |
use Illuminate\Support\Facades\DB; |
Para aquellos que no están familiarizados con las Facades de Laravel, estas solo son otra conveniente manera de acceder a los objetos en contenedores de servicio. Alternativamente, pudiste haber usado la inyección de dependencias.
Sigamos adelante y aprendamos cómo usar Laravel para crear la implementación concreta de un helper. Como puedes ver, hay un método estático que define la lógica para obtener un nombre de usuario en base a su ID.
1 |
$user = DB::table('users')->where('userid', $user_id)->first(); |
El objeto $user
contiene el registro de la base de datos con el ID de usuario correspondiente. Finalmente, el método devuelve el nombre de usuario como respuesta en la siguiente instrucción.
1 |
return (isset($user->username) ? $user->username : ''); |
Eso es todo en lo que respecta al archivo de nuestro Laravel helper.
Crea un proveedor de servicios personalizado
Ahora que ya sabes cómo crear un helper de Laravel, la siguiente pregunta es ¿cómo vas a usarlo? Me vienen a la mente dos soluciones rápidas:
- Puedes incluir el nombre de archivo de nuestro Laravel helper en el archivo composer.json, para que se cargue automáticamente. Luego podrías llamar de inmediato al método estático de la clase de nuestro helper.
- Puedes crear un proveedor de servicios de Laravel que te permita registrar tu archivo helper personalizado para que el framework Laravel lo cargue junto con otras dependencias. Registra ese proveedor de servicios en la configuración de Laravel y crea un alias para usar tu helper.
Por supuesto, la primera solución puede implementarse fácil y rápidamente, y es posible que sientas la tentación de usarla, pero yo prefiero sugerirte que aprendas cómo usar Laravel para crear un proveedor de servicios, ya que esta segunda opción parece más profesional y puedes darle mantenimiento con mayor facilidad.
Dirígete a la línea de comandos y ejecuta la siguiente instrucción en la raíz de la aplicación para crear un nuevo proveedor de servicios.
1 |
$php artisan make:provider EnvatoServiceProvider
|
2 |
Proveedor creado con éxito. |
Deberías ver un mensaje confirmando que el proveedor ha sido creado correctamente en el directorio app/Providers.
Al abrir ese archivo, deberías poder ver dos métodos ahí. Dado el contexto de este tutorial Laravel, lo más importante es el método register
. Sí, está vacío en este momento, así que vamos a agregarle un poco de código para que sea más útil.
1 |
public function register() |
2 |
{
|
3 |
require_once app_path() . '/Helpers/Envato/User.php'; |
4 |
}
|
El método register
se utiliza para registrar tus dependencias, y eso es exactamente lo que hemos hecho. Hemos incluido nuestro archivo helper personalizado.
Así es como el archivo app/Providers/EnvatoServiceProvider.php debería verse después de las modificaciones:
1 |
<?php
|
2 |
|
3 |
namespace App\Providers; |
4 |
|
5 |
use Illuminate\Support\ServiceProvider; |
6 |
|
7 |
class EnvatoServiceProvider extends ServiceProvider |
8 |
{
|
9 |
/**
|
10 |
* Registro de servicios.
|
11 |
*
|
12 |
* @return void
|
13 |
*/
|
14 |
public function register() |
15 |
{
|
16 |
require_once app_path() . '/Helpers/Envato/User.php'; |
17 |
}
|
18 |
|
19 |
/**
|
20 |
* Servicios de arranque.
|
21 |
*
|
22 |
* @return void
|
23 |
*/
|
24 |
public function boot() |
25 |
{
|
26 |
//
|
27 |
}
|
28 |
}
|
Hasta ahora todo va muy bien: tenemos nuestro Laravel helper y un proveedor de servicios personalizado sobre la mesa.
Declaración del proveedor de servicios personalizado
A continuación, debemos informar a Laravel sobre nuestro proveedor de servicios para que pueda cargarlo durante el arranque. Abramos config/app.php y agreguemos la siguiente entrada a la matriz providers
.
1 |
App\Providers\EnvatoServiceProvider::class, |
Para utilizar nuestro Laravel helper de una manera conveniente, también podemos crear un alias. Así que vamos a hacer eso añadiendo la siguiente entrada en la matriz aliases
al final del mismo archivo.
1 |
'EnvatoUser' => App\Helpers\Envato\User::class, |
Al definir esta entrada, podemos llamar a nuestro Laravel helper usando la palabra clave EnvatoUser
. Bastante conveniente, ¿no? ¡Ya casi terminamos! Hemos hecho todo el trabajo duro para llegar hasta este punto, y ahora podemos cosechar los beneficios de nuestro helper personalizado.
Tu primer Laravel helper personalizado en acción
Una vez más, para mantener las cosas simples, vamos a definir una ruta básica de Laravel ¡y a llamar a nuestro helper desde ahí!
Continúa y agrega el siguiente código en el archivo routes/web.php.
1 |
Route::get('/envato-user-helper-demo', function () { |
2 |
return EnvatoUser::get_username(1); |
3 |
});
|
¿Necesitamos explicar lo anterior? Acabamos de llamar al Laravel helper personalizado usando la abreviatura EnvatoUser::get_username
, y esto debería devolver el nombre de usuario.
Por supuesto, puedes llamar a este helper desde cualquier lugar de la aplicación, ya sea un controlador o una vista.
Conclusión
Los Laravel helpers son una potente herramienta, y tengo la certeza de que, como desarrollador, al crear un proyecto Laravel te encantaría poder extender su funcionalidad. Así que hoy hemos analizado los conceptos básicos de la estructura de archivos de los helpers de Laravel y hemos aprendido cómo usar Laravel para crear un útil helper personalizado.
Espero que hayas disfrutado de este tutorial Laravel y que te ayude a crear tus propios helpers personalizados durante el desarrollo cotidiano de tus aplicaciones.