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() y last() 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 directorios app/, storage/ y public/ 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

Da tus primeros pasos en Laravel de manera gratuita con nuestro curso Primeros Pasos con Laravel 6

Ver más

Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.