Utilizamos cookies para proporcionar y mejorar nuestros servicios. Al navegar por nuestro sitio, usted acepta las cookies. Política de Cookies
Estamos haciendo algo, un momento...
Estamos haciendo algo, un momento...

Clase Number en Laravel

Domingo 26 de Noviembre 2023

En muchas aplicaciones, a menudo surge la necesidad de formatear números según diferentes requisitos, como mostrarlos como moneda, porcentajes o tamaños de archivo legibles para humanos. Laravel no tenía una utilidad dedicada para esto, así que con la ayuda de la comunidad, decidí crear una. He estado trabajando en esta clase de utilidad por un tiempo y estoy realmente emocionado de que se haya fusionado en el framework. Veamos lo que ofrece.

La Clase de Number en Laravel

Todos los métodos forman parte de la clase Illuminate\Support\Number:

use Illuminate\Support\Number;

Formateo general de números

Usando el método format, podemos formatear un número según la configuración regional actual.

Number::format(25) // 25
Number::format(100000) // 100,000
Number::format(123456789) // 123,456,789

También podemos especificar una configuración regional personalizada para formatear el número según las reglas de esa configuración regional.

Number::format(123456789, 'en') // 123,456,789
Number::format(123456789, 'de') // 123.456.789
Number::format(123456789, 'sv') // 123 456 789

Formateo de porcentajes

El método toPercentage formatea un número como un porcentaje según la configuración regional actual.

Number::toPercentage(25) // 25%
Number::toPercentage((1/3) * 100, precision: 2) // 33.33%

Formateo de moneda

Aquí hay otro método divertido utilizado para formatear varias monedas con soporte para la configuración regional. ¡Perfecto para tus tiendas en línea!

Number::toCurrency(10) // $10.00
Number::toCurrency(25, currency: 'EUR') // €25.00
Number::toCurrency(5.49, currency: 'EUR', locale: 'de') // 5.49 €

Formateo de tamaño de archivo

Aquí está el método toFileSize, que en realidad es la razón detrás de esta clase de utilidad. En primer lugar, presenté un PR para agregar un ayudante File::bytesToHuman(), que Taylor sugirió incorporar como parte de una nueva clase Number.

Number::toFileSize(1024); // 1 KB
Number::toFileSize(1600, precision: 2); // 1.56 KB
Number::toFileSize(1024 * 1024 * 1024 * 5); // 5 GB

Formateo legible para humanos

A continuación, hay otro bastante divertido cuando quieres algo más legible que preciso. Convierte números en una cadena legible para humanos.

Number::forHumans(1000) // 1 mil
Number::forHumans(12345) // 12 mil
Number::forHumans(12345, precision: 3) // 12.345 mil

Configuración de la configuración regional

Podemos establecer la configuración regional globalmente utilizando el método setLocale, por ejemplo, en un proveedor de servicios.

Number::setLocale('sv');

También puedes usar el método withLocale, que ejecuta la devolución de llamada dada utilizando la configuración regional especificada y luego restaura la configuración regional original.

Number::withLocale('sv', function () {
    return Number::format(123456789);
});

¡Comentarios de la comunidad!

Para poder comentar necesita ingresar a su cuenta, si no tienes una cuenta puede crear una