nbykov/calculate-bundle

Symfony Calculate Bundle

dev-master 2019-09-04 15:19 UTC

This package is auto-updated.

Last update: 2024-05-05 02:01:49 UTC


README

Installation

1. Install bundle via composer: composer require nbykov/calculate-bundle

2. Add route:

calculate:
    resource: "@CalculateBundle/Controller/CalculateController.php"
    prefix: /
    type: annotation

3. Create your own service like (src/Service/Calculate.php):

<?php

namespace App\Service;

use nbykov\CalculateBundle\Entity\LocalExpression;
use nbykov\CalculateBundle\Service\CalculateServiceInterface;

class CalculateService implements CalculateServiceInterface
{
    public function calculate(string $expression): float
    {
        $expression = new LocalExpression($expression);
        return $expression->calculate();
    }
}

Usage

Simply send a POST-request to /calculate like:

POST /calculate HTTP/1.1
Host: <your host>
Content-Type: application/json
Accept: */*
Cache-Control: no-cache
Accept-Encoding: gzip, deflate
Content-Length: 34
Connection: keep-alive
cache-control: no-cache

{
	"expression" : "(10*2-6)/3+5"
}

And you will receive a response like:

{
    "message": "Expression should consist of digits, dots, brackets and math operations"
}

or:

{
    "result": 8
}

Extra

You can calculate result of expressions chain:

$calculator  = new ExpressionCalculator();
$result = $calculator->add(new LocalExpression('...'))
    ->divide(new LocalExpression('...'))
    ->multiply(new LocalExpression('...'))
    ->calculate();