De manera general un helper es una función de ayuda que realiza una tarea o procedimiento específico y que su uso puede repetirse una y otra vez a lo largo de nuestro proyecto. Esto permite que evitemos seguir escribiendo tal procedimiento en muchos lugares, por ejemplo, puede ser alguna función común que utilicemos en la mayoría de los controladores o vistas. Para este propósito se pueden crear helpers que ayuden a simplificar nuestro código.
Laravel nos ofrece algunos helpers que son de gran utilidad en nuestras nuestras aplicaciones. Estos se encuentran definidos en varios archivos del código fuente del framework:
vendor/laravel/framework/src/Illuminate/Support/helpers.php
vendor/laravel/framework/src/Illuminate/Foundation/helpers.php
vendor/laravel/framework/src/Illuminate/Support/Str.php
vendor/laravel/framework/src/Illuminate/Support/Arr.php
Los helpers de Laravel están clasificados en varias categorías:
- Los que nos permiten interactuar con arrays:
Arr::add
para agregar un nuevo par clave/valor,head()
ylast()
para saber el primer elemento y último elemento, entre otros. - Los relacionados con las rutas o paths:
app_path()
,storage_path()
,public_path()
, entre otros que nos devuelven la ruta absoluta de los directoriosapp/
,storage/
ypublic/
respectivamente. - Los helpers para manipular strings:
Str::limit
para limitar el número de caracteres de un string,trans()
que permite traducir un texto,Str::slug
para generar un URL amigable, entre otros. - Los helpers para trabajar URL como:
asset()
,url()
,route()
, entre otros. - Y los de uso diverso como son:
dd()
,csrf_token()
,auth()
,collect()
,env()
,back()
,with()
, entre otros.
Para conocer cada uno de ellos y saber cómo funcionan puedes consultar la documentación oficial.
Pero ¿Qué sucede cuando necesitamos una función que no está definida en Laravel por defecto? en ese caso, podemos crear nuestros propios helpers, no sólo para tener funciones reusables en el proyecto sino también para extender alguna funcionalidad del framework o adaptar algún procedimiento al modelo de negocio, y hacer que Composer realice la autocarga por nosotros.
Creación de una función helper en Laravel
Crea un archivo llamado helpers.php en el directorio app/
(puedes ubicar el archivo en cualquier otro lugar si lo deseas) el cual contendrá para este ejemplo:
<?php if (! function_exists('current_user')) { function current_user() { return auth()->user(); } }
Modifica tu archivo composer.json para agregar la carga del archivo con la clave files
dentro de la sección autoload
de la siguiente manera:
"autoload": { "psr-4": { "App\\": "app/" }, "classmap": [ "database/seeds", "database/factories" ], "files": [ "app/helpers.php" ] },
Por último, ejecuta en la consola:
composer dump-autoload
Para usar la función tan sólo debes escribirla en algún controlador o vista donde quieras obtener el usuario conectado, por ejemplo, en una vista podemos usar lo siguiente para obtener el nombre del usuario conectado:
{{ current_user()->name }}
Así ahora puedes escribir tantas funciones como quieras en el archivo helpers.php y usarlas en cualquier parte de la aplicación.
Material relacionado
Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.