LaravelPackages.net
Acme Inc.
Toggle sidebar
worksome/number

A package for handling numbers in Laravel

416.551
8
v4.2.1
About worksome/number

worksome/number is a Laravel package for a package for handling numbers in laravel. It currently has 8 GitHub stars and 416.551 downloads on Packagist (latest version v4.2.1). Install it with composer require worksome/number. Discover more Laravel packages by worksome or browse all Laravel packages to compare alternatives.

Last updated

Number

Latest Version on Packagist GitHub Tests Action Status GitHub PHPStan Action Status Total Downloads

A package for handling numbers in Laravel.

Installation

You can install the package via composer:

composer require worksome/number

Usage

use Worksome\Number\Number;

$number = Number::of(100);

$number->mul(Number::of(5));

echo $number; // 500

Casting

This package allows you to easily cast attributes on your Eloquent models to number types.

use Illuminate\Database\Eloquent\Model;
use Worksome\Number\Casts\NumberFromCents;
use Worksome\Number\Casts\NumberFromDecimal;
use Worksome\Number\MonetaryAmount;
use Worksome\Number\Percentage;
use Worksome\Number\Number;

class Product extends Model
{
    protected $casts = [
        'a' => NumberFromCents::class,
        'b' => NumberFromDecimal::class,
        'c' => NumberFromDecimal::using(2, MonetaryAmount::class), // Cast to a specialised Number-class
        'd' => NumberFromDecimal::using(2, Percentage::class), // Cast to a specialised Number-class
        'e' => NumberFromDecimal::using(3), // Three decimal places - default is 2
    ];
}

Available Number Types

The following Number types are available out of the box:

  • Number - The base number type, with two decimal places. Can be configured to use a different default scale.
  • MonetaryAmount - A number type for handling monetary amounts. Always uses two decimal places. Rounds automatically in all operations.
  • Percentage - A number type for handling percentages. Makes it clear that the number represents a percentage, not an amount. Adds % on to string representations.

GraphQL

This package also provides GraphQL scalar types for the WebOnyx GraphQL PHP package / Lighthouse.

These will be auto-registered for Lighthouse by Worksome\Number\Providers\NumberServiceProvider. However, if you want to do this manually, they can be registered in the type registry using:

// In Lighthouse (https://lighthouse-php.com)
$typeRegistry->register(new \Worksome\Number\GraphQL\Scalars\DecimalTwoType());
$typeRegistry->register(new \Worksome\Number\GraphQL\Scalars\PercentageType());
$typeRegistry->register(new \Worksome\Number\GraphQL\Scalars\StrictPercentageType());

Testing

composer test

Updating snapshots

To update Pest snapshots, run the following:

vendor/bin/pest -d --update-snapshots

Changelog

Please see GitHub Releases for more information on what has changed recently.

Credits

License

The MIT License (MIT). Please see License File for more information.

Comments