relaxdi / ctc-math-bundle
Symfony math calculate bundle
v1.0
2019-06-21 06:26 UTC
Requires
- php: >=7.1
- symfony/console: ^4.0
- symfony/dotenv: ^4.0
- symfony/flex: ^1.1
- symfony/framework-bundle: ^4.0
- symfony/yaml: ^4.0
Requires (Dev)
- phpunit/phpunit: ^7.2
- sensiolabs/security-checker: ^4.0
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);
}