Blog

  • Laravel 12.45: El Framework suma JsonApiResource para respuestas JSON:API

    Laravel 12.45 lanzó una nueva actualización que trae como novedad principal el agregado de JsonApiResource, una nueva manera de crear las respuestas de API siguiendo el estándar JSON:API. Esta mejora apunta a ordenar y unificar la estructura de las respuestas, algo que es muy útil en proyectos donde la API creció mucho y se transforma lentamente en un desastre para mantener.

    La diferencia clave con los recursos tradicionales de Laravel es la estructura del JSON. Mientras que los Eloquent API Resources devuelven los campos directamente, JsonApiResource organiza los datos dentro de la clave attributes y agrega id y type como campos de primer nivel. Esto alinea automáticamente las respuestas con la especificación JSON:API, que define una estructura clara basada en type, id, attributes y relationships.

    Ejemplo usando JsonApiResource en Laravel 12.45

    Supongamos que tenemos el típico modelo de Post. Con un Resource tradicional, algo así:

    <?php
    
    use IlluminateHttpResourcesJsonJsonResource;
    
    class PostResource extends JsonResource
    {
        public function toArray($request)
        {
            return [
                'id' => $this->id,
                'title' => $this->title,
                'content' => $this->content,
            ];
        }
    }
    

    La respuesta que nos trae JsonResource es:

    {
      "id": 1,
      "title": "Mi post",
      "content": "Contenido del post"
    }
    

    Si empezamos a utilizar JsonApiResource en Laravel 12, nos quedaría formateado según las especificaciones de JSON:API:

    <?php
    
    use IlluminateHttpResourcesJsonJsonApiResource;
    
    class PostResource extends JsonApiResource
    {
        public function toAttributes($request)
        {
            return [
                'title' => $this->title,
                'content' => $this->content,
            ];
        }
    }
    

    Respuesta en JsonApiResource:

    {
      "data": {
        "type": "posts",
        "id": "1",
        "attributes": {
          "title": "Mi post",
          "content": "Contenido del post"
        }
      }
    }

    Otro punto importante es que este nuevo recurso se puede configurar de forma global desde un Service Provider, como AppServiceProvider. A través del método configure, es posible agregar más datos comunes a todas las respuestas.

    Usando Variables Comunes en todos los Json

    Tal como te comenté, podes agregar campos que consideres que tienen que estar en todas tus respuestas, como puede ser: la fecha, la hora, la versión, la ip, etc… Solamente hay que configurar el Service Provider:

    use IlluminateHttpResourcesJsonJsonApiResource;
    
    public function boot(): void
    {
        JsonApiResource::configure()
            ->withMeta([
                'api' => [
                    'version' => '1.1',
                ],
            ]);
    }

    Además de JsonApiResource, la actualización viene con varias mejoras internas y nuevas funcionalidades: se agregaron eventos para pausar y reanudar colas, mejoras en seguridad como el cambio en la forma de almacenar la cookie “remember me”, soporte ampliado para enums en sesiones y caché, nuevos métodos en el query builder, mejoras en mensajes de error de base de datos y varios refactors y correcciones que apuntan a mayor estabilidad y claridad en el framework.

  • PrebuiltUI: componentes gratis listos para usar en tu sitio web

    Hoy en día, armar una web desde cero puede llevar mucho tiempo, sobre todo cuando hay que pensar cada detalle del diseño. Ahí es donde entra PrebuiltUI, que sirve como una ayuda práctica para los que desarrollan sitios o aplicaciones y necesitan resolver rápido la parte visual, usando componentes ya hechos y fáciles de adaptar. Cuanto menos tiempo diseñando estemos y más tiempo enfocándose en que el proyecto funcione bien y llegue a tiempo, mejor.

    PrebuiltUI es una biblioteca de componentes de interfaz de usuario (UI) para desarrollo web basada en Tailwind CSS que funciona como un recurso gratuito y abierto donde cualquier desarrollador puede ir a buscar y copiar bloques de código listos para usar en su proyecto, desde botones y barras de navegación hasta secciones completas de páginas, todos con diseño responsivo y preparados para integrarse fácilmente en HTML, React, Vue o Next.js sin tener que diseñarlos desde cero. En su Github y sitio web muestran la colección de más de 360 componentes y plantillas que ayudan a acelerar el diseño web.

    A diferencia de otras bibliotecas similares, como Tailwind UI o TailGrids, que requieren pagar una licencia para acceder a la mayoría de sus componentes, PrebuiltUI permite usar sus bloques de interfaz de forma gratuita, sin suscripciones ni costos ocultos, lo que la convierte en una opción práctica para resolver el diseño de un proyecto sin tener que invertir dinero.

    ¿Cómo usar los componentes de PrebuiltUI?

    Lo primero que tenemos que tener listo es un proyecto con TailwindCSS instalado, puede ser Laravel, Vuejs, React, o Capacitor. Una vez que eso está listo, usar PrebuiltUI es muy simple.

    Entrás a la página de PrebuiltUI, elegís el componente que te gusta (por ejemplo, un botón), copiás el código y lo pegás en tu archivo HTML o en tu app. Listo, ya aparece en pantalla. Por ejemplo, podes usar este botón:

    <button class="px-4 py-2 rounded-lg bg-black text-white hover:bg-gray-800">
      Button
    </button>

    Lo mejor de todo es que podés editar el botón a tu gusto usando las clases de Tailwind, como cambiar el color, hacerlo más grande o más chico, o redondear más las esquinas.

    Listado de Componentes listos para usar

    Las categorías de componentes que vas a encontrar al día de hoy son:

    • About: secciones para contar quién sos o de qué trata un proyecto.
    • Alert: mensajes cortos para avisos, errores o confirmaciones.
    • Avatar: imágenes de perfil de usuarios.
    • Badge: etiquetas pequeñas para destacar estados o categorías.
    • Banner: bloques grandes para anuncios o mensajes importantes.
    • Breadcrumbs: migas de navegación para mostrar dónde estás en el sitio.
    • Buttons: botones listos para acciones comunes.
    • Card: contenedores visuales para agrupar información.
    • Checkbox: casillas para seleccionar opciones.
    • Cookie Policy: avisos de uso de cookies.
    • Call to Action: secciones pensadas para invitar a hacer algo.
    • Dropdown Menu: menús desplegables.
    • E-commerce: componentes típicos de tiendas online.
    • FAQ Sections: secciones de preguntas frecuentes.
    • Feature Sections: bloques para destacar funciones o ventajas.
    • Footer: pie de página del sitio.
    • Form: formularios completos.
    • Hero Section: sección principal destacada de una página.
    • Image Gallery: galerías de imágenes.
    • Input: campos para ingresar datos.
    • Login Form: formularios de inicio de sesión.
    • Menu: menús de navegación.
    • Modal Dialogs: ventanas emergentes.
    • Navbar: barra de navegación superior.
    • Newsletter: secciones para suscripción por mail.
    • 404 Pages: páginas de error cuando algo no existe.
    • Pagination: navegación entre páginas de contenido.
    • Pricing Card: tarjetas para mostrar precios y planes.
    • Progress Bar: barras que muestran avance o carga.
    • Promotional: bloques para promociones u ofertas.
    • Search Bar: barras de búsqueda.
    • Social Media: enlaces o botones a redes sociales.
    • Tabs: pestañas para organizar contenido.
    • Team Sections: secciones para presentar equipos.
    • Testimonial: opiniones o reseñas de usuarios.
    • Toggle Switch: interruptores de encendido y apagado.
    • Trusted Brand: secciones para mostrar marcas o clientes que confían en vos.

    Enlace para ver todos los componentes:

    https://prebuiltui.com/components/

  • Crear un Alias para PHP ARTISAN en Windows

    Seguramente viste en muchos videos, que en lugar de usar en Laravel php artisan serve (o otro comando), usan un alias o un comando corto en su lugar. Para simplificar este proceso, podés configurar un alias en PowerShell que te permita escribir comandos de Laravel más cortos, como a make:model, en lugar del más largo php artisan make:model. A continuación, te mostramos cómo hacerlo:

    Editar el archivo del perfil de PowerShell

    PowerShell permite personalizar su configuración mediante un archivo de perfil. Para editarlo, abre PowerShell y ejecuta el siguiente comando:

    notepad $PROFILE
    

    Este comando abrirá el archivo de configuración de tu perfil en el Bloc de Notas. Si el archivo no existe, PowerShell lo creará automáticamente. En este archivo es donde agregamos la función que se encargara de aplicar los atajos en nuestra consola.

    Agregar una función personalizada

    En el archivo que se abre, agrega la siguiente función:

    function a {
        param (
            [Parameter(ValueFromRemainingArguments = $true)]
            [string[]]$args
        )
        php artisan @args
    }

    Esta función permite que cada vez que escribas a seguido de argumentos (por ejemplo, a make:model), PowerShell interprete esto como php artisan seguido de los mismos argumentos.

    Guardar y aplicar los cambios

    Guarda el archivo y cerra el Bloc de Notas. Luego, para aplicar los cambios sin reiniciar PowerShell, ejecuta este comando:

    . $PROFILE
    

    Esto recargará tu archivo de configuración y activará el alias inmediatamente.

    Probar el alias

    Ya se puede probar el alias en PowerShell:

    a make:model TestModel
    

    Esto ejecutará el comando equivalente php artisan make:model TestModel. Con este alias, se puede ahorrar tiempo y escribir comandos más rápidamente. Especialmente los comandos de Laravel que se usan repetidamente.

  • ¿Qué es MagicInfo? El software de cartelería digital de Samsung

    MagicInfo es un software de gestión de contenido desarrollado por Samsung, diseñado para administrar de forma centralizada pantallas digitales o sistemas de Digital Signage. Este sistema permite a empresas y organizaciones controlar, programar y monitorear el contenido que se muestra en sus redes de pantallas desde una única plataforma.

    Con MagicInfo, podés transmitir mensajes publicitarios, informativos o interactivos de manera eficiente, asegurándote de que el contenido esté siempre actualizado y optimizado para captar la atención de tu audiencia.

    Principales características de MagicInfo

    1. Gestión remota: Podés controlar una red de pantallas desde cualquier lugar, ya sea para actualizar contenido, ajustar configuraciones o realizar diagnósticos técnicos.
    2. Programación avanzada: Te permite establecer horarios para mostrar contenido específico en diferentes momentos del día, asegurando mensajes relevantes y oportunos.
    3. Integración con hardware Samsung: MagicInfo está diseñado para trabajar de forma fluida con los monitores Samsung Smart Signage, lo que garantiza compatibilidad y alto rendimiento.
    4. Informes y análisis: Incluye herramientas que ayudan a medir el impacto de tus campañas, como datos sobre duración y frecuencia de los contenidos reproducidos.
    5. Escalabilidad: Ya sea para una red pequeña de pantallas o cientos de dispositivos, MagicInfo se adapta a las necesidades de tu negocio.

    Beneficios de usar MagicInfo

    • Ahorro de tiempo: La capacidad de gestionar todas las pantallas desde una sola plataforma simplifica las operaciones y reduce el esfuerzo manual.
    • Impacto visual mejorado: El software garantiza que el contenido se reproduzca en alta definición, ofreciendo una experiencia visual atractiva y profesional.
    • Reducción de costos operativos: Al centralizar la gestión de contenido, eliminás los costos asociados a visitas técnicas o actualizaciones manuales.

    ¿Para quién es ideal MagicInfo?

    MagicInfo es una solución versátil que beneficia a múltiples industrias, como:

    • Retail: Mostrar promociones, ofertas y anuncios en tiempo real.
    • Educación: Comunicar información en campus universitarios mediante pantallas interactivas.
    • Hospitalidad: Brindar información sobre servicios, eventos y menús digitales en hoteles.
    • Empresas: Transmitir noticias internas y mensajes corporativos en oficinas.

    ¿Cómo empezar con MagicInfo?

    1. Adquirí un monitor compatible de la línea Samsung Smart Signage.
    2. Descargá la versión del software que mejor se adapte a tus necesidades (MagicInfo Express, MagicInfo Premium o MagicInfo Cloud).
    3. Configurá tu red de pantallas e integrá el contenido que quieras mostrar.

    Si querés conocer más sobre MagicInfo, podés visitar la página oficial de Samsung acá.

  • Laravel 11 ya se encuentra disponible!

    Es oficial, ya se encuentra disponible la nueva versión de Laravel 11 disponible para la descarga. Como les comente en el post anterior sobre las novedades de Laravel 11 (Laravel 11: Todo lo que sabemos del framework hasta la fecha – Latirus), la fecha de lanzamiento prevista era para mediados de Marzo del 2024. Trataremos de mostrarte algunas de las novedades más importantes.

    Nueva Versión de PHP

    Ahora la versión mínima necesaria para correr un proyecto en Laravel 11, es de PHP 8.2. Es decir, que con este cambio todas las versiones anteriores de PHP no van a ser utilizadas para desarrollar aplicaciones en Laravel.

    Nueva Estructura de Archivos

    El cambio más destacado para Laravel 11 es la estructura de carpetas de la aplicación en donde fue simplificado para una mejor administración de archivos.

    Cuando instalas un nuevo proyecto de Laravel, la disposición de carpetas se verá de esta manera:

    app/
    ├── Http/
    │   └── Controllers/
    │       └── Controller.php
    ├── Models/
    │   └── User.php
    └── Providers/
        └── AppServiceProvider.php
    
    bootstrap/
    ├── app.php
    └── providers.php
    
    config
    
    ...

    OBSERVACIÓN: Estos cambios en la estructura son OPCIONALES. Serán el predeterminado solo para NUEVOS proyectos. Las aplicaciones antiguas de Laravel pueden mantener la estructura anterior.

    Carpetas eliminadas: app/Console, app/Exceptions, app/Http/Middleware.

    Las rutas, los middlewares y las excepciones ahora se registran en el archivo bootstrap/app.php.

    <?php
    
    use IlluminateFoundationApplication;
    use IlluminateFoundationConfigurationExceptions;
    use IlluminateFoundationConfigurationMiddleware;
    
    return Application::configure(basePath: dirname(__DIR__))
        ->withRouting(
            web: __DIR__.'/../routes/web.php',
            commands: __DIR__.'/../routes/console.php',
            health: '/up',
        )
        ->withMiddleware(function (Middleware $middleware) {
            //
        })
        ->withExceptions(function (Exceptions $exceptions) {
            //
        })
        ->create();

    Además, se ha optimizado la carpeta de rutas. Se han eliminado los archivos routes/channel.php, routes/console.php y routes/api.php.

    Podés ver más información de la estructura de las carpetas en el siguiente enlace:

    Todo lo que tenés que saber sobre los directorios en Laravel 11 – Latirus

    Nuevos Comandos make para simplificar la creación

    Una de las novedades de Laravel 11 es la creación de nuevos comandos artisan para crear clases, interfaces y enum.

    php artisan make:enum
    php artisan make:class
    php artisan make:interface

    Como Instalar Laravel 11?

    La manera más fácil de instalar Laravel 11 es a través de composer o del instalador oficial de Laravel al igual que sus predecesores Laravel 10 y 9.

    composer global require laravel/installer

    y luego:

    laravel new nombre_del_proyecto_en_laravel_11
  • Todo lo que tenés que saber sobre los directorios en Laravel 11

    En la nueva versión de Laravel 11, surgieron cambios en las estructuras de carpetas y archivos. Si bien no representan un gran cambio a la hora de actualizar, puede que simplifique mucho y ordene mejor el código. Te dejo un resumen de los cambios en los directorios de Laravel 11.

    Observaciones Generales

    Se han añadido más variables de entorno al archivo .env.example.

    El valor por defecto de la variable QUEUE_CONNECTION ha sido actualizado a database en lugar de sync.

    Las variables de entorno BROADCAST_DRIVER y CACHE_DRIVER han sido renombradas como BROADCAST_CONNECTION y CACHE_STORE, respectivamente.

    Se ha eliminado el Kernel HTTP. La configuración que antes se realizaba en este archivo ahora puede ser llevada a cabo en el archivo bootstrap/app.php, incluyendo la inscripción o sustitución de middleware.

    El kernel de consola ha sido suprimido. Los horarios pueden ser definidos en el archivo de «rutas» de consola. Los comandos generados por make:command son cargados automáticamente y no requieren registro. Vías de carga adicionales para comandos pueden ser inscritas en el archivo bootstrap/app.php.

    El manejador de excepciones ha sido descartado. La configuración del comportamiento de manejo de excepciones puede ser realizada en el archivo bootstrap/app.php a través de reportable, renderable, throttle, y más. Los callbacks recibidos por estas funciones tendrán sus tipos inspeccionados para verificar si manejan una excepción determinada.

    El controlador HTTP base ya no extiende ninguna otra clase (necesitando la nueva característica de definición de middleware). No se incluyen características por defecto en el controlador base. La autorización puede ser realizada usando fachadas, o características pueden ser añadidas manualmente.

    Todo middleware ha sido eliminado. La configuración del comportamiento de este middleware puede ser llevada a cabo mediante métodos estáticos en los middlewares mismos (ver notas del framework).

    El modelo de usuario ahora utiliza un método de «casts» en lugar de una propiedad. El trait HasApiTokens ha sido eliminado por defecto dado que Sanctum no está instalado automáticamente.

    Todos los proveedores de servicios excepto AppServiceProvider han sido eliminados. Las políticas son descubiertas automáticamente y las gates pueden ser inscritas en AppServiceProvider. De igual manera, los eventos pueden ser inscritos en AppServiceProvider. El comportamiento de enrutamiento es ahora determinado/personalizado en el archivo bootstrap/app.php.

    El nuevo archivo bootstrap/app.php puede ser utilizado para personalizar el comportamiento central del framework como enrutamiento, contenedor de enlaces, middleware y manejo de excepciones.

    Sanctum ya no es instalado por defecto

    Los archivos de configuración no están presentes automáticamente. Pueden ser publicados mediante el comando config:publish. Los valores por defecto están presentes en la configuración a nivel de framework y de aplicación, y ahora la configuración a nivel de aplicación sobrescribe las definiciones del framework, así que solo los valores personalizados necesitan estar presentes en los archivos de configuración a nivel de aplicación.

    Los archivos de migración han sido refechados para estar siempre actualizados. La migración de la tabla password_reset_tokens ha sido combinada en la migración de la tabla users. De igual forma, la migración de la tabla jobs ha sido combinada en una sola migración con la tabla failed_jobs.

    El arranque de Echo ha sido eliminado automáticamente. Es reinstalado mediante el nuevo comando install:broadcasting.

    Los archivos de rutas de API y de canal no están presentes automáticamente, pueden ser recreados mediante install:api e install:broadcasting, respectivamente.

  • Laravel 11: Todo lo que sabemos del framework hasta la fecha

    El lanzamiento oficial de Laravel 11 pareciera que se está retrasando un poco más de lo esperado. Laravel 11 inicialmente está planificado para el primer trimestre Q1 2024, lo que significa que hasta marzo de 2024 podría demorarse la salida oficial, si bien aún estamos en dentro del tiempo establecido, las versiones de Laravel anteriores solían estar disponibles a mediados de febrero.

    Novedades Generales

    Laravel 11 continúa con las mejoras introducidas en Laravel 10.x, presentando una estructura de aplicación simplificada, límites de velocidad por segundo, enrutamiento de salud, rotación elegante de claves de cifrado, mejoras en las pruebas de colas, transporte de correo para reenvío, integración de validadores de forma rápida, nuevos comandos de Artisan y más. Además, se ha lanzado Laravel Reverb, un servidor WebSocket escalable de primera parte, diseñado para potenciar las capacidades en tiempo real de tus aplicaciones.

    La estructura de archivos en Laravel 11 no tiene cambios notorios, por lo que no será necesario modificar código extra.

    Nuevos comandos Artisan

    php artisan make:class
    
    php artisan make:interface
    
    php artisan make:trait

    Cambios en bootstrap/app.php

    El archivo bootstrap/app.php ha sido revitalizado como un archivo de configuración de aplicación de código primero. A partir de este archivo, ahora puedes personalizar la configuración de enrutamiento, middleware, proveedores de servicios, manejo de excepciones y más de tu aplicación. Este archivo unifica una variedad de configuraciones de comportamiento de aplicación de alto nivel que antes estaban dispersas en la estructura de archivos de tu aplicación.

    ->withMiddleware(function (Middleware $middleware) {
    
        $middleware->validateCsrfTokens(
    
            except: ['stripe/*']
    
        );
    
        $middleware->web(append: [
    
            EnsureUserIsSubscribed::class,
    
        ])
    
    })

    Estos son algunos de los cambios que ya se pueden ir viendo desde la pagina oficial de Laravel. Esperemos que en unas semanas se encuentre disponible el changelog completo.

  • 2 paquetes que seguro no conocías para el diseño web con Laravel

    Lavarel se considera un framework PHP para artesanos web como lo describen ellos. Simple, corto y funcional a largo plazo. Por tal motivo, se posiciona entre los frameworks más codiciados de su categoría.

    Sin embargo, una vez que te familiarizas con él, es lógico que busques nuevos retos: herramientas, acciones y funcionalidades. Esta es la razón por la que te presentamos 4 paquetes esenciales para el diseño web con Laravel.

    2 paquetes esenciales para el diseño web con Laravel

    A continuación enlistaremos los recursos más útiles para mejorar tu web con Laravel:

    1. Plantilla Josh Admin

    Se trata de una plantilla de administración, cuya finalidad es ahorrarte tiempo y optimizar el procedimiento de gestión de tu web.

    Entre las características más impresionantes enlistamos:

    • Un diseño inspirado en Bootstrap
    • Un esquema de web responsivo
    • Y contabilidad con CSS3/HTML5

    Por otro lado, te ofrece un control del back-end y front-end completopara que puedas obtener información acerca de su uso, funcionalidad u otros aspectos. Como, por ejemplo, vistas, ventas, suscripciones o usuarios registrados.

    2. Kokatin

    Pretende innovar el sistema de intercambio de archivos. De esta manera, compartir documentos y carpetas con otras personas serás simple y menos tedioso. Su modelo de interacción se asemeja al de Dropbox y Box.

    Te ofrece las siguientes características:

    • Compatibilidad multilingüe
    • Una API especializada
    • Administración de miembros
    • Compatibilidad adaptable de diseño web
    • Acceso a un editor de plantillas
    • Capacidad de minimizar imágenes
    • Y una subida o descarga rápida

    En menos de lo que esperas controlarás una red segura, elegante y funcional de intercambio de archivos.

    Ahora conoces cuáles son los cuatro frameworks que no puedes perderte. Y si los aplicas con sabiduría, diseñarás webs funcionales con poco esfuerzo.

  • Filament PHP: La Solución para crear paneles de administración en Laravel

    Filament PHP es una herramienta necesaria a la hora de desarrollar aplicación en Laravel. Todas las aplicaciones, por más mínimas que sean, necesitan un panel de administración para organizar la información. Filament PHP proporciona una interfaz de administración con solo unos clicks y sin utilizar vistas Blades, solamente con PHP.

    Algunas características destacadas de Filament PHP incluyen:

    1. Interfaz de usuario amigable: Filament ofrece una interfaz de usuario intuitiva y fácil de usar para administrar los datos de tu aplicación.
    2. Personalizable: Puedes personalizar fácilmente el panel de administración para que se adapte a las necesidades específicas de tu aplicación, incluyendo la configuración de roles y permisos de usuario.
    3. Generadores de CRUD: Filament proporciona generadores de código para crear rápidamente operaciones CRUD (crear, leer, actualizar, eliminar) para tus modelos de Laravel.
    4. Compatibilidad con Laravel: Filament se integra perfectamente con Laravel y aprovecha las características y funcionalidades del framework.
    5. Seguridad: Filament incluye características de seguridad integradas, como la autenticación de usuarios y la gestión de permisos, para proteger tu panel de administración.

    Filament PHP fue creado en 2020 por Antonio Ribeiro. Es una herramienta relativamente nueva que ha ganado popularidad entre los desarrolladores de Laravel debido a su facilidad de uso y su capacidad para proporcionar paneles de administración rápidos y personalizables para aplicaciones Laravel.

  • PHP: Diferencias entre rand() y random_int()

    En PHP, hay funciones dedicadas a la generación de números aleatorios, pero ¿podemos confiar en que estos números son realmente aleatorios? A primera vista, rand() y random_int() pueden parecer similares, pero difieren en términos de seguridad y rendimiento. Mientras ambas son capaces de generar números aleatorios en PHP, estas diferencias son significativas y merecen ser destacadas.

    Cuando usar rand()?

    rand() es una función en PHP que genera un número entero pseudoaleatorio. La sintaxis básica de la función rand() es la siguiente:

    $min = 1;
    $max = 10;
    rand($min, $max) // devuelve un número aleatorio del 1 al 10

    En este ejemplo $min y $max son los valores mínimo y máximo que pueden ser generados. La función rand() generará un número entero aleatorio en el rango especificado mínimo y máximo.

    Es importante tener en cuenta que rand() utiliza un generador de números pseudoaleatorios (PRNG), lo que significa que los números generados no son verdaderamente aleatorios, sino que siguen una secuencia determinada por un algoritmo. Esta secuencia puede ser repetible y predecible en ciertas circunstancias, por lo que rand() no es adecuado para aplicaciones que requieran alta seguridad criptográfica. El mejor caso de uso para rand() seria en pequeñas aplicaciones que necesites un numero al azar para generar un resultado rápido. No es recomendable para trabajar en bases de datos.

    Cuando usar random_int()?

    random_int() es una función en PHP que se utiliza para generar un número entero aleatorio criptográficamente seguro dentro de un rango especificado. Esta función es la preferida a la hora de trabajar con datos seguros, como generación de contraseñas, tokens y claves. La sintaxis es similar a rand():

    $min = 1;
    $max = 10;
    random_int($min, $max) // devuelve un número aleatorio entero del 1 al 10

    Es importante destacar que random_int() utiliza un generador de números aleatorios criptográficamente seguro, lo que significa que los números generados son más impredecibles y resistentes a los ataques que los generados por rand(). Esto lo hace adecuado para aplicaciones donde la seguridad es crítica.

    Conclusión

    En conclusión, la secuencia de números que genera rand() es menos impredecible y puede ser más vulnerable a ciertos tipos de ataques. En situaciones donde la seguridad es crítica, es preferible usar random_int() u otras funciones generadoras de números aleatorios en PHP criptográficamente seguros.