relaxdi/ctc-math-bundle

Symfony math calculate bundle

Installs: 6

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Forks: 0

Type:symfony-bundle

v1.0 2019-06-21 06:26 UTC

This package is not auto-updated.

Last update: 2024-04-21 05:23:58 UTC


README

Пакет расширения для Symfony 4+. Парсер математических выражений с возможностью расширения

Возможности

  • Быстрый расчет простых строк
  • Работает с операторами: + - * / ^
  • Поддерживает неограниченные уровни выражений
  • Работа из консоли

Установка

Установка пакета для Symfony 4+:

composer require relaxdi/math-calculate-bundle

Расширение

Добавить в service.yml:

relaxdi\CtcMathBundle\Service\CalculateFacade:
     autowire: true
     arguments:
          $parser: '@App\Service\YouClassParser'

Пример работы

Из консоли:

php bin/console ctc:math:calculate --expression="1-24" // -23
php bin/console ctc:math:calculate --expression="4/56*2" // 0.142857
php bin/console ctc:math:calculate -s 12-59+4 // -43

В контроллере:

/**
 * @Route("/execute", name="execute", methods={"POST"})
 * @param Request $request
 * @param CalculateFacade $calculate
 * @return \Symfony\Component\HttpFoundation\JsonResponse
 */
public function executeAction(Request $request, CalculateFacade $calculate)
{
    $expression = $request->request->get('expression');
    try {
        $result['result'] = $calculate->execute($expression);
    } catch (ParserException $e) {
        $result = [
            'result' => '',
            'error'  => $e->getMessage(),
        ];
    }
    return $this->json($result);
}