Laravel Helpers - Guía Completa
Índice de Helpers
| Helper | Descripción |
|---|---|
__() | Traduce mensaje (alias para trans()) |
abort() | Lanza HttpException con datos dados |
abort_if() | Lanza HttpException si condición es verdadera |
abort_unless() | Lanza HttpException a menos que condición sea verdadera |
action() | Genera URL para acción del controlador |
app() | Obtiene instancia del contenedor |
app_path() | Obtiene ruta de la carpeta de aplicación |
append_config() | Anexa elementos de configuración |
asset() | Genera ruta de asset |
auth() | Obtiene instancia de autenticación |
back() | Redirección a página anterior |
base_path() | Obtiene ruta base de la instalación |
bcrypt() | Hace hash usando algoritmo bcrypt |
blank() | Verifica si valor está vacío |
broadcast() | Inicia transmisión de evento |
cache() | Gestiona valores del caché |
class_basename() | Obtiene nombre base de la clase |
class_uses_recursive() | Retorna traits usados recursivamente |
collect() | Crea colección a partir de valor |
config() | Gestiona valores de configuración |
config_path() | Obtiene ruta de configuración |
context() | Gestiona contexto para logs |
cookie() | Crea instancia de cookie |
csrf_field() | Genera campo de formulario CSRF |
csrf_token() | Obtiene token CSRF |
data_fill() | Rellena datos faltantes |
data_forget() | Elimina elemento por notación de punto |
data_get() | Obtiene elemento por notación de punto |
data_set() | Define elemento por notación de punto |
database_path() | Obtiene ruta de la base de datos |
decrypt() | Desencripta valor |
defer() | Aplaza ejecución de callback |
dispatch() | Despacha job al manejador |
dispatch_sync() | Despacha comando en proceso actual |
e() | Codifica caracteres HTML para prevenir XSS |
encrypt() | Encripta valor |
env() | Obtiene valor de variable de entorno |
event() | Despacha evento y llama listeners |
fake() | Obtiene instancia del faker para pruebas |
filled() | Verifica si valor está rellenado |
fluent() | Crea objeto Fluent |
head() | Obtiene primer elemento del array |
info() | Escribe información en el log |
lang_path() | Obtiene ruta de la carpeta de idiomas |
laravel_cloud() | Verifica si está ejecutándose en Laravel Cloud |
last() | Obtiene último elemento del array |
literal() | Retorna objeto literal usando argumentos nombrados |
logger() | Registra mensaje de debug en los logs |
logs() | Obtiene instancia del driver de log |
method_field() | Genera campo para falsificar verbo HTTP |
mix() | Obtiene ruta para archivo versionado del Mix |
now() | Crea instancia Carbon para tiempo actual |
object_get() | Obtiene elemento de objeto por notación de punto |
old() | Recupera elemento de entrada antigua |
once() | Garantiza ejecución única de callable |
optional() | Acceso seguro a propiedades/métodos sin error de null |
policy() | Obtiene instancia de policy |
precognitive() | Maneja hook del controlador Precognition |
preg_replace_array() | Sustituye patrón con valores del array |
public_path() | Obtiene ruta de la carpeta pública |
redirect() | Obtiene instancia del redireccionador |
report() | Reporta excepción |
report_if() | Reporta excepción si condición es verdadera |
report_unless() | Reporta excepción a menos que condición sea verdadera |
request() | Obtiene instancia de la petición actual |
rescue() | Captura excepción y retorna valor por defecto |
resolve() | Resuelve servicio del contenedor |
resource_path() | Obtiene ruta de la carpeta de recursos |
response() | Retorna nueva respuesta de la aplicación |
retry() | Intenta ejecutar operación múltiples veces |
route() | Genera URL para ruta nombrada |
secure_asset() | Genera ruta de asset con HTTPS |
secure_url() | Genera URL HTTPS |
session() | Gestiona valores de sesión |
storage_path() | Obtiene ruta de la carpeta de almacenamiento |
str() | Obtiene objeto stringable |
tap() | Llama Closure con valor y retorna valor |
throw_if() | Lanza excepción si condición es verdadera |
throw_unless() | Lanza excepción a menos que condición sea verdadera |
to_route() | Crea redirección a ruta nombrada |
today() | Crea instancia Carbon para fecha actual |
trait_uses_recursive() | Retorna traits usados por un trait |
trans() | Traduce mensaje |
trans_choice() | Traduce mensaje basado en conteo |
transform() | Transforma valor si está presente |
url() | Genera URL para aplicación |
validator() | Crea instancia Validator |
value() | Retorna valor por defecto (resuelve Closures) |
view() | Obtiene contenido de la vista evaluada |
when() | Retorna valor si condición es verdadera |
windows_os() | Verifica si entorno está basado en Windows |
with() | Retorna valor pasado a través de callback |
Helpers por Categoría
Assets y Mix
fake()
Obtiene una instancia del faker para pruebas y generación de datos ficticios.
// Generar nombre falso
$nombre = fake()->name();
// Generar email falso
$email = fake()->email();
// Generar texto falso
$texto = fake()->text(200);mix()
Obtiene la ruta para un archivo versionado del Laravel Mix, incluyendo el hash de versión para cache busting.
// Ruta para archivo CSS versionado
echo mix('css/app.css'); // /css/app.css?id=abc123
// Ruta para archivo JS versionado
echo mix('js/app.js'); // /js/app.js?id=def456Autenticación y Autorización
auth()
Obtiene la instancia de autenticación disponible o un guard específico.
// Obtener usuario autenticado
$user = auth()->user();
// Verificar si está autenticado
if (auth()->check()) {
// Usuario está logueado
}
// Usar guard específico
$admin = auth('admin')->user();policy()
Obtiene una instancia de policy para autorización.
// Obtener policy de usuario
$policy = policy(User::class);
// Verificar permiso
if ($policy->view($user, $post)) {
// Usuario puede ver el post
}Generación de URL
action()
Genera una URL para una acción del controlador.
// URL para acción del controlador
$url = action([UserController::class, 'show'], ['id' => 1]);
// /user/1
// URL con parámetros adicionales
$url = action([UserController::class, 'edit'], ['user' => 1], false);
// user/1/edit (URL relativa)asset()
Genera una URL para un asset de la aplicación.
// URL de asset
echo asset('css/app.css'); // /css/app.css
// Asset con subdominio
echo asset('images/logo.png'); // /images/logo.pngroute()
Genera una URL para una ruta nombrada.
// URL de ruta nombrada
$url = route('user.show', ['id' => 1]);
// Ruta con parámetros
$url = route('user.edit', ['user' => $user]);
// URL absoluta
$url = route('user.show', ['id' => 1], true);secure_asset()
Genera una URL para un asset de la aplicación usando HTTPS.
// URL de asset seguro
echo secure_asset('css/app.css'); // https://example.com/css/app.csssecure_url()
Genera una URL HTTPS completamente calificada para la aplicación.
// URL segura
echo secure_url('user/profile'); // https://example.com/user/profile
// URL segura con parámetros
echo secure_url('user/profile', ['tab' => 'settings']);url()
Genera una URL completamente calificada para la aplicación.
// Generar URL
echo url('user/profile'); // http://example.com/user/profile
// URL con parámetros
echo url('user/profile', ['tab' => 'settings']);
// http://example.com/user/profile?tab=settings
// URL segura
echo url('user/profile', [], true); // https://example.com/user/profileRespuesta y Redirección
abort()
Lanza una excepción HTTP.
// Error 404
abort(404);
// Error 403 con mensaje
abort(403, 'Acción no autorizada.');
// Error 500 con headers
abort(500, 'Error del Servidor', ['X-Custom-Header' => 'value']);abort_if()
Lanza una excepción HTTP si una condición es verdadera.
// Abortar si usuario no es admin
abort_if(!auth()->user()->isAdmin(), 403);
// Abortar con mensaje personalizado
abort_if($errors->any(), 422, 'Validación falló');abort_unless()
Lanza una excepción HTTP a menos que una condición sea verdadera.
// Abortar a menos que usuario sea propietario del post
abort_unless($user->owns($post), 403);
// Abortar a menos que esté autenticado
abort_unless(auth()->check(), 401, 'Autenticación requerida');back()
Crea una respuesta de redirección a la ubicación anterior del usuario.
// Redirigir atrás
return back();
// Redirigir atrás con datos
return back()->with('success', '¡Perfil actualizado!');
// Redirigir atrás con entrada
return back()->withInput();
// Redirigir atrás con errores
return back()->withErrors(['email' => 'Email inválido']);redirect()
Obtiene una instancia del redireccionador.
// Redirección simple
return redirect('/home');
// Redirigir a ruta nombrada
return redirect()->route('user.show', ['id' => 1]);
// Redirigir a acción del controlador
return redirect()->action([UserController::class, 'index']);
// Redirigir con datos
return redirect('/home')->with('success', '¡Bienvenido!');response()
Retorna una nueva respuesta de la aplicación.
// Respuesta simple
return response('Hola Mundo');
// Respuesta JSON
return response()->json(['message' => 'Éxito']);
// Respuesta con estado y headers
return response('No Encontrado', 404, ['Content-Type' => 'text/plain']);
// Respuesta de descarga
return response()->download('/path/to/file.pdf');to_route()
Crea una respuesta de redirección a una ruta nombrada.
// Redirigir a ruta nombrada
return to_route('user.show', ['id' => 1]);
// Redirigir con código de estado
return to_route('user.index', [], 302);Rutas de la Aplicación
app_path()
Obtiene la ruta a la carpeta de aplicación.
// Ruta del directorio app
$path = app_path(); // /path/to/app
// Ruta a archivo específico
$path = app_path('Http/Controllers/UserController.php');
// /path/to/app/Http/Controllers/UserController.phpbase_path()
Obtiene la ruta a la raíz del proyecto.
// Ruta base
$path = base_path(); // /path/to/project
// Ruta a archivo específico
$path = base_path('composer.json'); // /path/to/project/composer.jsonconfig_path()
Obtiene la ruta a la carpeta de configuración.
// Ruta del directorio config
$path = config_path(); // /path/to/config
// Ruta a archivo de configuración específico
$path = config_path('app.php'); // /path/to/config/app.phpdatabase_path()
Obtiene la ruta a la carpeta de base de datos.
// Ruta del directorio database
$path = database_path(); // /path/to/database
// Ruta a archivo específico
$path = database_path('migrations'); // /path/to/database/migrationslang_path()
Obtiene la ruta a la carpeta de idiomas.
// Ruta del directorio lang
$path = lang_path(); // /path/to/lang
// Ruta a archivo de idioma específico
$path = lang_path('en/messages.php'); // /path/to/lang/en/messages.phppublic_path()
Obtiene la ruta a la carpeta pública.
// Ruta del directorio public
$path = public_path(); // /path/to/public
// Ruta a archivo específico
$path = public_path('css/app.css'); // /path/to/public/css/app.cssresource_path()
Obtiene la ruta a la carpeta de recursos.
// Ruta del directorio resources
$path = resource_path(); // /path/to/resources
// Ruta a archivo específico
$path = resource_path('views/welcome.blade.php');
// /path/to/resources/views/welcome.blade.phpstorage_path()
Obtiene la ruta a la carpeta de almacenamiento.
// Ruta del directorio storage
$path = storage_path(); // /path/to/storage
// Ruta a archivo específico
$path = storage_path('app/file.txt'); // /path/to/storage/app/file.txtContenedor y Servicios
app()
Obtiene la instancia del contenedor disponible o resuelve un servicio.
// Obtener instancia de la aplicación
$app = app();
// Resolver servicio del contenedor
$cache = app('cache');
// Resolver con parámetros
$service = app(UserService::class, ['param' => 'value']);resolve()
Resuelve un servicio del contenedor.
// Resolver servicio
$cache = resolve('cache');
// Resolver clase
$service = resolve(UserService::class);Configuración
config()
Obtiene o establece valores de configuración.
// Obtener valor de configuración
$timezone = config('app.timezone');
// Obtener con valor por defecto
$debug = config('app.debug', false);
// Establecer valor de configuración
config(['app.locale' => 'es']);
// Establecer múltiples valores
config([
'app.timezone' => 'UTC',
'app.locale' => 'es'
]);append_config()
Anexa elementos de configuración a un valor de configuración de array.
// Anexar a configuración de array
append_config(['app.providers' => [
CustomServiceProvider::class
]]);env()
Obtiene el valor de una variable de entorno.
// Obtener variable de entorno
$debug = env('APP_DEBUG');
// Obtener con valor por defecto
$debug = env('APP_DEBUG', false);
// Variable de entorno con casting de tipo
$timeout = env('SESSION_LIFETIME', 120);Caché
cache()
Obtiene o almacena valores en el caché.
// Obtener valor del caché
$value = cache('key');
// Obtener con valor por defecto
$value = cache('key', 'default');
// Almacenar en caché
cache(['key' => 'value'], now()->addHour());
// Almacenar con tags
cache()->tags(['users', 'posts'])->put('key', 'value', 3600);Sesión
session()
Obtiene o almacena valores de sesión.
// Obtener valor de sesión
$value = session('key');
// Obtener con valor por defecto
$value = session('key', 'default');
// Almacenar en sesión
session(['key' => 'value']);
// Datos flash a sesión
session()->flash('message', '¡Éxito!');old()
Recupera un valor de entrada flash de la sesión.
// Obtener entrada antigua
$email = old('email');
// Obtener con valor por defecto
$name = old('name', 'Juan Pérez');
// En plantilla Blade
<input type="email" name="email" value="{{ old('email') }}">Cookies
cookie()
Crea una nueva instancia de cookie.
// Crear cookie
$cookie = cookie('name', 'value', 60);
// Cookie con dominio y secure
$cookie = cookie('name', 'value', 60, '/', '.domain.com', true, true);
// Encolar cookie para próxima respuesta
cookie()->queue('name', 'value', 60);Protección CSRF
csrf_field()
Genera un campo de entrada HTML oculto que contiene el token CSRF.
// En plantilla Blade
{{ csrf_field() }}
// Salida: <input type="hidden" name="_token" value="...">csrf_token()
Obtiene el valor del token CSRF.
// Obtener token CSRF
$token = csrf_token();
// En JavaScript
const token = '{{ csrf_token() }}';method_field()
Genera un campo de entrada HTML oculto que contiene el verbo HTTP.
// En plantilla Blade para petición PUT
{{ method_field('PUT') }}
// Salida: <input type="hidden" name="_method" value="PUT">
// Para petición DELETE
{{ method_field('DELETE') }}Petición e Entrada
request()
Obtiene la instancia de la petición actual o un valor de entrada.
// Obtener instancia de petición
$request = request();
// Obtener valor de entrada
$email = request('email');
// Obtener con valor por defecto
$name = request('name', 'Invitado');
// Obtener toda la entrada
$input = request()->all();Validación
validator()
Crea una instancia de validador.
// Crear validador
$validator = validator(['email' => 'test@example.com'], [
'email' => 'required|email'
]);
// Verificar si la validación pasa
if ($validator->passes()) {
// Validación pasó
}
// Obtener errores de validación
$errors = $validator->errors();Fecha y Hora
now()
Crea una instancia Carbon para la fecha y hora actual.
// Timestamp actual
$now = now();
// Timestamp actual en zona horaria específica
$now = now('America/Mexico_City');
// Formatear hora actual
echo now()->format('Y-m-d H:i:s');
// Añadir tiempo
$future = now()->addHours(2);today()
Crea una instancia Carbon para la fecha actual.
// Fecha de hoy
$today = today();
// Hoy en zona horaria específica
$today = today('America/Mexico_City');
// Formatear fecha de hoy
echo today()->format('Y-m-d');
// Inicio del día
$startOfDay = today()->startOfDay();Localización
__()
Traduce el mensaje dado (alias para trans()).
// Traducción simple
echo __('Bienvenido');
// Traducción con parámetros
echo __('Bienvenido, :name', ['name' => 'Juan']);
// Traducción de archivo específico
echo __('messages.welcome');
// Traducción con fallback
echo __('messages.welcome', [], 'en');trans()
Traduce el mensaje dado.
// Traducción simple
echo trans('Bienvenido');
// Traducción con parámetros
echo trans('Bienvenido, :name', ['name' => 'Juan']);
// Traducción de archivo específico
echo trans('messages.welcome');trans_choice()
Traduce el mensaje dado basado en un conteo.
// Pluralización
echo trans_choice('messages.notifications', $count);
// Con parámetros
echo trans_choice('messages.notifications', $count, ['name' => 'Juan']);
// Especificación manual de conteo
echo trans_choice('messages.items', 5, ['count' => 5]);Logging
info()
Escribe un mensaje informativo en los logs.
// Log info simple
info('Usuario logueado');
// Info con contexto
info('Usuario logueado', ['user_id' => 123]);
// Info con datos adicionales
info('Procesando pago', [
'amount' => 100,
'currency' => 'USD',
'user_id' => 123
]);logger()
Registra un mensaje de debug en los logs u obtiene una instancia del logger.
// Registrar mensaje de debug
logger('Información de debug');
// Registrar con contexto
logger('Acción de usuario', ['action' => 'login', 'user_id' => 123]);
// Obtener instancia del logger
$logger = logger();
$logger->error('Mensaje de error');logs()
Obtiene una instancia del driver de log.
// Obtener driver de log por defecto
$log = logs();
// Obtener driver específico
$slackLog = logs('slack');
// Registrar con driver específico
logs('slack')->info('Notificación importante');report()
Reporta una excepción al manejador de excepciones.
// Reportar excepción
try {
// Código que podría fallar
} catch (Exception $e) {
report($e);
}
// Reportar con contexto
report($exception, ['user_id' => auth()->id()]);report_if()
Reporta una excepción si una condición dada es verdadera.
// Reportar excepción si condición es verdadera
report_if($shouldReport, $exception);
// Reportar con contexto
report_if(app()->isProduction(), $exception, ['context' => 'production']);report_unless()
Reporta una excepción a menos que una condición dada sea verdadera.
// Reportar excepción a menos que condición sea verdadera
report_unless($shouldIgnore, $exception);
// Reportar a menos que esté en testing
report_unless(app()->runningUnitTests(), $exception);Eventos y Broadcasting
broadcast()
Comienza la transmisión de un evento.
// Transmitir evento
broadcast(new OrderUpdated($order));
// Transmitir a canales específicos
broadcast(new OrderUpdated($order))->to(['order.' . $order->id]);
// Transmitir con retraso
broadcast(new OrderUpdated($order))->delay(now()->addMinutes(5));event()
Despacha un evento y llama a sus listeners.
// Despachar evento
event(new UserRegistered($user));
// Despachar con múltiples parámetros
event('user.login', [$user, $request]);
// Despachar hasta primera respuesta no nula
$response = event('user.login', [$user], true);Colas y Jobs
dispatch()
Despacha un job a su manejador apropiado.
// Despachar job
dispatch(new ProcessPayment($order));
// Despachar con retraso
dispatch(new ProcessPayment($order))->delay(now()->addMinutes(10));
// Despachar a cola específica
dispatch(new ProcessPayment($order))->onQueue('payments');
// Despachar a conexión específica
dispatch(new ProcessPayment($order))->onConnection('redis');dispatch_sync()
Despacha un comando a su manejador apropiado en el proceso actual.
// Despachar sincrónicamente
dispatch_sync(new ProcessPayment($order));
// Útil para testing o ejecución inmediata
dispatch_sync(new SendWelcomeEmail($user));Seguridad
bcrypt()
Hace hash del valor dado usando el algoritmo bcrypt.
// Hash de contraseña
$hash = bcrypt('password');
// Hash con rondas personalizadas
$hash = bcrypt('password', ['rounds' => 12]);
// Verificar contraseña
if (password_verify('password', $hash)) {
// Contraseña es correcta
}decrypt()
Desencripta el valor dado.
// Desencriptar valor
$decrypted = decrypt($encryptedValue);
// Desencriptar con cipher específico
$decrypted = decrypt($encryptedValue, false);encrypt()
Encripta el valor dado.
// Encriptar valor
$encrypted = encrypt('datos secretos');
// Encriptar para serialización
$encrypted = encrypt($object, true);e()
Codifica caracteres HTML en una cadena para prevenir ataques XSS.
// Escapar HTML
echo e('<script>alert("XSS")</script>');
// Salida: <script>alert("XSS")</script>
// Escapar entrada de usuario
echo e($userInput);
// En plantillas Blade (escape automático)
{{ $userInput }} // Automáticamente escapado
{!! $trustedInput !!} // No escapadoManipulación de Datos
blank()
Determina si el valor dado está "en blanco".
// Verificar si está en blanco
blank(''); // true
blank(null); // true
blank([]); // true
blank(collect()); // true
blank(' '); // true
blank('hola'); // falsefilled()
Determina si el valor dado no está "en blanco".
// Verificar si está rellenado
filled('hola'); // true
filled([1, 2, 3]); // true
filled(''); // false
filled(null); // false
filled([]); // falsecollect()
Crea una colección a partir del valor dado.
// Crear colección de array
$collection = collect([1, 2, 3]);
// Crear colección vacía
$empty = collect();
// Métodos de colección
$collection->filter(function ($item) {
return $item > 1;
})->map(function ($item) {
return $item * 2;
});data_fill()
Rellena valores faltantes en un array u objeto usando notación de punto.
$data = ['products' => ['desk' => ['price' => 100]]];
// Rellenar valores faltantes
data_fill($data, 'products.desk.name', 'Escritorio');
data_fill($data, 'products.chair.price', 200);
// Resultado: ['products' => ['desk' => ['price' => 100, 'name' => 'Escritorio'], 'chair' => ['price' => 200]]]data_forget()
Elimina un elemento de un array u objeto usando notación de punto.
$data = [
'products' => [
'desk' => ['price' => 100, 'name' => 'Escritorio'],
'chair' => ['price' => 200]
]
];
// Eliminar elemento
data_forget($data, 'products.desk.name');
data_forget($data, 'products.chair');data_get()
Recupera un elemento de un array u objeto usando notación de punto.
$data = [
'products' => [
'desk' => ['price' => 100, 'name' => 'Escritorio']
]
];
// Obtener elemento
$price = data_get($data, 'products.desk.price'); // 100
$name = data_get($data, 'products.desk.name'); // 'Escritorio'
// Obtener con valor por defecto
$color = data_get($data, 'products.desk.color', 'marrón'); // 'marrón'
// Usar comodín
$prices = data_get($data, 'products.*.price'); // [100]data_set()
Establece un elemento en un array u objeto usando notación de punto.
$data = ['products' => ['desk' => ['price' => 100]]];
// Establecer elemento
data_set($data, 'products.desk.name', 'Escritorio');
data_set($data, 'products.chair.price', 200);
// Establecer con comodín
data_set($data, 'products.*.discount', 10);head()
Retorna el primer elemento en un array.
// Obtener primer elemento
$first = head([1, 2, 3]); // 1
$first = head(['a' => 1, 'b' => 2]); // 1
// Array vacío
$first = head([]); // nulllast()
Retorna el último elemento en un array.
// Obtener último elemento
$last = last([1, 2, 3]); // 3
$last = last(['a' => 1, 'b' => 2]); // 2
// Array vacío
$last = last([]); // nullManipulación de Cadenas y Objetos
class_basename()
Obtiene el "basename" de clase del objeto / clase dado.
// Obtener basename de clase
$basename = class_basename('App\Http\Controllers\UserController'); // 'UserController'
$basename = class_basename(new User); // 'User'
$basename = class_basename(User::class); // 'User'class_uses_recursive()
Retorna todos los nombres de trait usados por una clase, sus clases padre y dependencias de traits.
// Obtener todos los traits usados por clase
$traits = class_uses_recursive(User::class);
// Ejemplo de salida: ['Illuminate\Database\Eloquent\Concerns\HasTimestamps', ...]trait_uses_recursive()
Retorna todos los nombres de trait usados por un trait y sus dependencias.
// Obtener traits usados por un trait
$traits = trait_uses_recursive(SomeTraitName::class);fluent()
Crea un objeto fluent a partir del valor dado.
// Crear objeto fluent
$fluent = fluent(['name' => 'Juan', 'age' => 30]);
// Acceder propiedades
echo $fluent->name; // 'Juan'
echo $fluent->get('age'); // 30
// Establecer propiedades
$fluent->email = 'juan@example.com';
$fluent->set('phone', '123-456-7890');literal()
Retorna un nuevo objeto con los argumentos nombrados dados.
// Crear objeto con argumentos nombrados
$object = literal(name: 'Juan', age: 30, city: 'Madrid');
// Acceder propiedades
echo $object->name; // 'Juan'
echo $object->age; // 30object_get()
Recupera un elemento de un objeto usando notación de punto.
$object = (object) [
'user' => (object) [
'name' => 'Juan',
'email' => 'juan@example.com'
]
];
// Obtener propiedad
$name = object_get($object, 'user.name'); // 'Juan'
$email = object_get($object, 'user.email'); // 'juan@example.com'
// Obtener con valor por defecto
$phone = object_get($object, 'user.phone', 'N/A'); // 'N/A'str()
Obtiene un nuevo objeto stringable de la cadena dada.
// Crear objeto stringable
$str = str('Hola Mundo');
// Manipulación de cadenas
$result = str('hola mundo')
->title()
->replace('Mundo', 'Laravel')
->slug();
// Encadenamiento de métodos
$slug = str('Hola Mundo')->slug(); // 'hola-mundo'
$title = str('hola mundo')->title(); // 'Hola Mundo'Control de Flujo
once()
Asegura que un callable se ejecute solo una vez.
$expensive = once(function () {
// Esta operación costosa solo se ejecutará una vez
return expensiveOperation();
});
// Primera llamada ejecuta la función
$result1 = $expensive(); // Ejecuta expensiveOperation()
// Llamadas subsiguientes retornan resultado en caché
$result2 = $expensive(); // Retorna resultado en cachéoptional()
Retorna el valor si existe o un valor por defecto.
// Acceso seguro a propiedades
$name = optional($user)->name;
// Llamadas seguras a métodos
$email = optional($user)->getEmail();
// Llamadas encadenadas
$phone = optional($user)->profile->phone;
// Con callback
$result = optional($user, function ($user) {
return $user->name . ' - ' . $user->email;
});rescue()
Ejecuta el callback dado y captura cualquier excepción que ocurra durante la ejecución.
// Rescue con valor por defecto
$result = rescue(function () {
return riskyOperation();
}, 'valor por defecto');
// Rescue con callback para manejo de excepciones
$result = rescue(function () {
return riskyOperation();
}, function ($exception) {
report($exception);
return 'valor de respaldo';
});
// Rescue simple
$result = rescue(fn() => $user->profile->phone, 'N/A');retry()
Intenta ejecutar el callback dado hasta que se alcance el umbral máximo de intentos dado.
// Reintentar hasta 3 veces
$result = retry(3, function () {
// Operación potencialmente fallida
return callExternalAPI();
});
// Reintentar con retraso (milisegundos)
$result = retry(3, function () {
return callExternalAPI();
}, 1000);
// Reintentar con función de retraso personalizada
$result = retry(3, function () {
return callExternalAPI();
}, function ($attempt) {
return $attempt * 1000; // Backoff exponencial
});
// Reintentar con condición when
$result = retry(3, function () {
return callExternalAPI();
}, 1000, function ($exception) {
return $exception instanceof ConnectionException;
});tap()
Llama el closure dado con el valor dado y luego retorna el valor.
// Tap en valor
$user = tap(new User, function ($user) {
$user->name = 'Juan';
$user->email = 'juan@example.com';
});
// Tap con llamadas a métodos
$collection = tap(collect([1, 2, 3]), function ($collection) {
$collection->push(4);
});
// Tap para debugging
$result = tap($someValue, function ($value) {
logger('Procesando valor: ' . $value);
});throw_if()
Lanza la excepción dada si una condición dada evalúa a verdadero.
// Lanzar si condición es verdadera
throw_if($user->isNotAuthorized(), new UnauthorizedException);
// Lanzar con mensaje
throw_if($errors->any(), ValidationException::class, 'Validación falló');
// Lanzar con callback
throw_if($user->isBlocked(), function () {
return new BlockedException('Usuario está bloqueado');
});throw_unless()
Lanza la excepción dada a menos que una condición dada evalúe a verdadero.
// Lanzar a menos que condición sea verdadera
throw_unless($user->isAuthorized(), new UnauthorizedException);
// Lanzar a menos que esté autenticado
throw_unless(auth()->check(), new AuthenticationException);
// Lanzar con callback
throw_unless($user->canAccess($resource), function () {
return new AccessDeniedException('No puede acceder al recurso');
});transform()
Transforma el valor dado si está presente.
// Transformar si no es null
$result = transform($value, function ($value) {
return strtoupper($value);
});
// Transformar con valor por defecto
$result = transform($value, function ($value) {
return strtoupper($value);
}, 'por defecto');
// Transformar null retorna null (a menos que se proporcione valor por defecto)
$result = transform(null, function ($value) {
return strtoupper($value);
}); // nullvalue()
Retorna el valor por defecto del valor dado.
// Retornar valor tal como es
$result = value('hola'); // 'hola'
// Ejecutar closure
$result = value(function () {
return 'valor dinámico';
}); // 'valor dinámico'
// Con parámetros
$result = value(function ($name) {
return "Hola, {$name}";
}, 'Juan'); // 'Hola, Juan'when()
Retorna el valor si la condición dada es verdadera.
// Retornar valor si condición es verdadera
$result = when(true, 'valor'); // 'valor'
$result = when(false, 'valor'); // null
// Con callback
$result = when($user->isAdmin(), function () {
return 'privilegios de admin';
});
// Con valor por defecto
$result = when(false, 'admin', 'invitado'); // 'invitado'with()
Retorna el valor dado, opcionalmente pasado a través del callback dado.
// Retornar valor tal como es
$result = with('hola'); // 'hola'
// Transformar valor
$result = with('hola', function ($value) {
return strtoupper($value);
}); // 'HOLA'
// Útil para encadenamiento de métodos
$user = with(new User)->fill($attributes)->save();Contexto y Defer
context()
Obtiene o almacena valores de contexto para la petición actual.
// Almacenar contexto
context(['user_id' => auth()->id()]);
// Obtener contexto
$userId = context('user_id');
// Obtener todo el contexto
$allContext = context();
// El contexto se incluye automáticamente en logs
logger('Acción de usuario realizada'); // Incluirá user_id en contexto del logdefer()
Aplaza la ejecución de un callback hasta que la petición esté terminando.
// Aplazar ejecución
defer(function () {
// Esto se ejecutará después de que se envíe la respuesta
cleanupTempFiles();
});
// Aplazar con nombre (puede ser cancelado)
defer(function () {
sendAnalytics();
}, 'analytics');
// Siempre aplazar (incluso si existe defer previo con mismo nombre)
defer(function () {
logMetrics();
}, 'metrics', always: true);Testing
fake()
Obtiene una instancia faker para generar datos falsos en pruebas.
// Generar datos falsos
$name = fake()->name();
$email = fake()->email();
$address = fake()->address();
$text = fake()->text(200);
// Datos falsos específicos de localización
$name = fake('es_ES')->name(); // Nombre en español
$phone = fake('es_ES')->phoneNumber();
// Semilla para datos falsos consistentes
fake()->seed(1234);
$name1 = fake()->name(); // Siempre igual con la misma semillaUtilidades
laravel_cloud()
Determina si la aplicación se está ejecutando en Laravel Cloud.
// Verificar si se ejecuta en Laravel Cloud
if (laravel_cloud()) {
// Ejecutándose en Laravel Cloud
$cloudConfig = getCloudSpecificConfig();
}
// Lógica condicional para entorno cloud
$cacheDriver = laravel_cloud() ? 'redis' : 'file';precognitive()
Maneja hook del controlador Precognition.
// En método del controlador
public function store(Request $request)
{
// Manejar validación precognitiva
precognitive(function () use ($request) {
$request->validate([
'name' => 'required|string|max:255',
'email' => 'required|email|unique:users'
]);
});
// Continuar con procesamiento normal
$user = User::create($request->validated());
return response()->json($user);
}preg_replace_array()
Reemplaza un patrón dado con cada valor en el array en orden secuencial.
$string = 'El :attribute debe ser :type.';
$replacements = ['nombre', 'cadena'];
$result = preg_replace_array('/:attribute|:type/', $replacements, $string);
// Resultado: 'El nombre debe ser cadena.'
// Con patrones más complejos
$string = 'Hola :name, tienes :count mensajes.';
$replacements = ['Juan', '5'];
$result = preg_replace_array('/:name|:count/', $replacements, $string);
// Resultado: 'Hola Juan, tienes 5 mensajes.'windows_os()
Determina si el SO actual es Windows.
// Verificar si se ejecuta en Windows
if (windows_os()) {
// Lógica específica de Windows
$path = str_replace('/', '\\', $path);
}
// Operaciones de archivo condicionales
$separator = windows_os() ? '\\' : '/';
$fullPath = $directory . $separator . $filename;Vistas
view()
Obtiene el contenido de vista evaluado para la vista dada.
// Renderizar vista
$html = view('welcome');
// Vista con datos
$html = view('user.profile', ['user' => $user]);
// Vista con array de datos
$html = view('emails.notification', [
'user' => $user,
'message' => $message
]);
// Verificar si vista existe
if (view()->exists('custom.template')) {
$html = view('custom.template');
}
// Retornar respuesta de vista
return view('dashboard', compact('users', 'stats'));