Laravel Tutorials

Precise Number Formatting with Laravel's Enhanced Number::spell Method

Published
Precise Number Formatting with Laravel's Enhanced Number::spell Method image

Laravel's Number::spell method now includes 'until' and 'after' parameters that provide developers with greater control over when numbers should appear as words or digits in applications. This enhancement supports sophisticated typography conventions with minimal effort.

Following typographic best practices often requires spelling out smaller numbers while keeping larger values as digits. Laravel's Number helper has expanded its capabilities to make this common pattern more accessible:

use Illuminate\Support\Number;
 
// Use 'until' parameter to spell out numbers below the threshold
Number::spell(7, until: 10); // "seven"
Number::spell(10, until: 10); // "10"
Number::spell(15, until: 10); // "15"
 
// Use 'after' parameter to spell out numbers above the threshold
Number::spell(8, after: 10); // "8"
Number::spell(11, after: 10); // "eleven"
Number::spell(14, after: 10); // "fourteen"

This feature proves particularly valuable when creating content that follows publishing standards or enhancing readability in reports and notifications:

class OrderSummaryService
{
public function generateEmailSummary($orderData)
{
// Spell out small numbers, use digits for larger ones
return "Your order contains " . Number::spell($orderData['item_count'], until: 10) .
" items from " . Number::spell($orderData['vendor_count'], until: 10) .
" different sellers. Delivery is expected in " . Number::spell($orderData['delivery_days'], until: 10) .
" days. Your loyalty account has been credited with " . Number::spell($orderData['reward_points']) .
" points for this purchase.";
}
}

This would produce: "Your order contains six items from three different sellers. Delivery is expected in five days. Your loyalty account has been credited with 250 points for this purchase."

The method easily integrates into notification systems or content generators:

class NotificationFormatter
{
public function formatInventoryAlert($product)
{
return "INVENTORY ALERT: Only " . Number::spell($product['stock_remaining'], until: 5) .
" units of " . $product['name'] . " remain in stock. The minimum threshold is " .
Number::spell($product['min_threshold'], until: 5) . " units.";
}
}

With these threshold parameters, developers can implement nuanced number formatting rules efficiently, creating more professional and readable content throughout their applications.

Harris Raftopoulos photo

Senior Software Engineer • Staff & Educator @ Laravel News • Co-organizer @ Laravel Greece Meetup

Sponsored

serpapi logo
SerpApi

The Web Search API for Your LLM and AI Applications

Visit SerpApi

The latest

View all →
PayZephyr: One Payment API for Stripe, Paystack, and PayPal image

PayZephyr: One Payment API for Stripe, Paystack, and PayPal

Read article
Bifrost Turns One With AI Builds and New Workflows image

Bifrost Turns One With AI Builds and New Workflows

Read article
Preview Blade Templates in macOS Finder with Quick Blade image

Preview Blade Templates in macOS Finder with Quick Blade

Read article
Artisan Debugging Commands in Laravel Telescope 5.24.0 image

Artisan Debugging Commands in Laravel Telescope 5.24.0

Read article
Queue totalSize() and JobInterrupted Event in Laravel 13.31 image

Queue totalSize() and JobInterrupted Event in Laravel 13.31

Read article
Find Unexpected Test Inputs with Fuzz for Pest image

Find Unexpected Test Inputs with Fuzz for Pest

Read article