Precise Number Formatting with Laravel's Enhanced Number::spell Method
Last updated on by Harris Raftopoulos

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 thresholdNumber::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 thresholdNumber::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.