Laravel 数字助手介绍

最后更新于 作者:

大家好,我是 Caen!我很高兴与大家分享我最近对 Laravel 框架(PR #48845)的贡献,我相信它将简化你的数字格式需求。我引入了一个新的 Number 工具类,它提供了几个新的辅助方法来格式化数字,它应该在本周的下一个 Laravel 版本中可用。

作为另一个额外福利:这些辅助方法是区域设置感知的,因此你可以根据当前区域设置来格式化数字,无论是全局还是针对每个方法!

背景

在许多应用程序中,经常需要根据不同的要求来格式化数字,例如将它们显示为货币、百分比或人类可读的文件大小。Laravel 之前没有为此专门的工具,因此在社区的帮助下,我决定创建一个。我已经在这个工具类上工作了一段时间,并且非常高兴它已合并到框架中。让我们来看看它提供了什么。

Laravel 的 Number

简介

所有方法都是 Illuminate\Support\Number 类的一部分

use Illuminate\Support\Number;

通用数字格式化

使用 format 方法,我们可以根据当前区域设置格式化数字。

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

我们还可以指定一个自定义区域设置,以根据该区域设置的规则格式化数字。

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

百分比格式化

formatPercentage 方法根据当前区域设置将数字格式化为百分比。

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

货币格式化

这里还有另一个有趣的方法,用于使用区域设置支持来格式化各种货币。非常适合你的网上商店!

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

文件大小格式化

这是 toFileSize 方法,它实际上是这个工具类的全部原因。我最初提交了一个 PR 来添加一个 File::bytesToHuman() 辅助方法(PR #48827),Taylor 然后建议我们将它添加为新的 Number 类的一部分。

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

人类可读格式化

接下来也是一个非常有趣的方法,当你想要比精确更具可读性时使用它。它将数字转换为人类可读的字符串。

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

设置区域设置

我们可以使用 setLocale 方法全局设置区域设置,例如在服务提供者中

Number::setLocale('sv');

你也可以使用 withLocale 方法,它使用指定的区域设置执行给定的回调,然后恢复原始区域设置

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

结论

我希望这个新增的功能能够在你处理 Laravel 中的数字格式化时让你的生活更轻松一些。请随时查看下一个 Laravel 版本,并将这个工具类整合到你的项目中。编码愉快!

更新 2023 年 11 月 21 日:Numbers 助手现在已在 官方 Laravel 助手文档 中进行了记录。

Caen De Silva photo

自由职业前端开发背景,目前是全栈 Laravel/PHP 工程师,专注于后端和网络安全,对开源充满热情。创建了基于 Laravel 的静态网站生成器 HydePHP。

分类
Cube

Laravel 新闻通讯

加入 40,000 多名其他开发人员,绝不错过任何新技巧、教程等等。

Laravel Forge logo

Laravel Forge

轻松创建和管理你的服务器,并在几秒钟内部署你的 Laravel 应用程序。

Laravel Forge
Tinkerwell logo

Tinkerwell

Laravel 开发人员必备的代码运行器。使用 AI、自动完成和对本地和生产环境的即时反馈进行调试。

Tinkerwell
No Compromises logo

No Compromises

来自 No Compromises 播客的两名经验丰富的开发者 Joel 和 Aaron 现在可以为你雇用进行 Laravel 项目。 ⬧ 固定价格为每月 $7500。 ⬧ 无需冗长的销售流程。 ⬧ 无需合同。 ⬧ 100% 退款保证。

No Compromises
Kirschbaum logo

Kirschbaum

提供创新和稳定性,确保你的 Web 应用程序取得成功。

Kirschbaum
Shift logo

Shift

运行的是旧版本的 Laravel?即时、自动化的 Laravel 升级和代码现代化,让你的应用程序保持最新状态。

Shift
Bacancy logo

Bacancy

使用经验丰富的 Laravel 开发人员为你的项目注入活力,拥有 4-6 年的经验,每月只需 $2500。获得 160 小时的专业技能和 15 天免费试用。立即预约电话!

Bacancy
Lucky Media logo

Lucky Media

立即获得好运 - Laravel 开发的理想选择,拥有超过十年的经验!

Lucky Media
Lunar: Laravel E-Commerce logo

Lunar:Laravel 电子商务

Laravel 的电子商务。一个开源包,将现代无头电子商务功能的力量带到 Laravel。

Lunar:Laravel 电子商务
LaraJobs logo

LaraJobs

官方 Laravel 职位招聘网站

LaraJobs
SaaSykit: Laravel SaaS Starter Kit logo

SaaSykit:Laravel SaaS 启动工具包

SaaSykit 是一个 Laravel SaaS 启动工具包,包含运行现代 SaaS 所需的所有功能。支付、漂亮的结账、管理面板、用户仪表板、身份验证、预制组件、统计、博客、文档等等。

SaaSykit:Laravel SaaS 启动工具包
Rector logo

Rector

你无缝升级 Laravel、降低成本和加速创新的合作伙伴,助你打造成功的公司

Rector
MongoDB logo

MongoDB

通过 MongoDB 和 Laravel 的强大集成来增强你的 PHP 应用程序,使开发人员能够轻松高效地构建应用程序。支持事务、搜索、分析和移动用例,同时使用熟悉的 Eloquent API。探索 MongoDB 灵活、现代的数据库如何改变你的 Laravel 应用程序。

MongoDB
Maska is a Simple Zero-dependency Input Mask Library image

Maska 是一个简单的零依赖输入掩码库

阅读文章
Add Swagger UI to Your Laravel Application image

在你的 Laravel 应用程序中添加 Swagger UI

阅读文章
Assert the Exact JSON Structure of a Response in Laravel 11.19 image

在 Laravel 11.19 中断言响应的精确 JSON 结构

阅读文章
Build SSH Apps with PHP and Laravel Prompts image

使用 PHP 和 Laravel 提示构建 SSH 应用程序

阅读文章
Building fast, fuzzy site search with Laravel and Typesense image

使用 Laravel 和 Typesense 构建快速、模糊的网站搜索

阅读文章
Add Comments to your Laravel Application with the Commenter Package image

使用 Commenter 包在您的 Laravel 应用程序中添加评论

阅读文章