Introducción: Por qué las funciones helper son imprescindibles en Laravel
\n\nSi alguna vez has programado en Laravel, seguro te ha pasado: en un controlador o plantilla necesitas formatear una fecha, recortar un texto, verificar permisos o generar un slug una y otra vez. Copias el mismo fragmento de código de un proyecto a otro y luego maldices la duplicación.
\n\n¿Te suena familiar? Bienvenido al club. En Stack Overflow, la pregunta "How to create custom helper functions in Laravel" acumula miles de visitas, y no es casualidad. Las funciones helper (o simplemente "helpers") son tu manera de decirle "no" al copia-pega y "sí" a un código limpio y reutilizable.
\n\nEn este tutorial no solo te mostraremos cómo crear tu primera función helper. Analizaremos tres métodos probados, desde el más simple hasta el más avanzado con carga automática mediante Composer. Aprenderás a organizar tus helpers para que no se conviertan en un caos y cómo probarlos sin dolores de cabeza.
\n\n¡Comencemos!
\n\n¿Qué es una función helper y para qué sirve?
\n\nUna función helper es una función PHP común que realiza una tarea específica. Laravel ya incluye helpers integrados como str_slug(), route(), config() y otros. Pero tarde o temprano necesitarás algo propio, como una función para formatear un número de teléfono o generar un identificador único.
Ventajas de los helpers personalizados:
\n- \n
- Reutilización de código — lo escribes una vez, lo usas en todas partes. \n
- Legibilidad — en lugar de 10 líneas con condiciones, escribes
formatPhone($number). \n - Facilidad de prueba — los helpers se cubren fácilmente con tests unitarios. \n
- Gestión centralizada — cambias la lógica en un solo lugar y se aplica a todo el proyecto. \n
Pero hay una trampa: una organización incorrecta de los helpers puede convertir tu proyecto en un caos. Por eso, hagámoslo bien desde el principio.
\n\nMétodo 1: Clásico — archivo helpers.php manual
\n\nLa forma más simple y clara para principiantes. Creamos un archivo app/helpers.php y lo vinculamos en composer.json.
Paso 1. Crear el archivo helpers.php
\n\nVe a la raíz de tu proyecto Laravel y crea el archivo app/helpers.php. Dentro, escribe una función simple:
<?php\n\nif (!function_exists('formatDate')) {\n function formatDate($date, $format = 'd.m.Y')\n {\n if (!$date) {\n return null;\n }\n return Carbon\\Carbon::parse($date)->format($format);\n }\n}\n\nObserva el envoltorio if (!function_exists(...)). Es un seguro contra conflictos si la función ya está definida en otro lugar. Usa siempre esta estructura.
Paso 2. Vincular el archivo mediante Composer
\n\nAbre composer.json y en la sección autoload agrega:
"files": [\n "app/helpers.php"\n]\n\nDebería quedar algo así:
\n\n"autoload": {\n "psr-4": {\n "App\\\\": "app/"\n },\n "files": [\n "app/helpers.php"\n ]\n}\n\nAhora ejecuta el comando en la terminal:
\n\ncomposer dump-autoload\n\n¡Listo! Ahora puedes usar formatDate() en cualquier parte de tu aplicación Laravel: controladores, modelos, plantillas Blade.
Método 2: Mediante Service Provider (más avanzado)
\n\nEste método es ideal si quieres controlar estrictamente cuándo y qué helpers se cargan. Por ejemplo, si tienes helpers solo para el panel de administración o para la API.
\n\nPaso 1. Crear un Service Provider
\n\nEjecuta el comando artisan:
\n\nphp artisan make:provider HelperServiceProvider\n\nAbre el archivo creado app/Providers/He