https://www.moneyphp.org/en/stable/ Библиотека Money for PHP предоставляет инструменты для удобного и мощного хранения и использования денежных значений. Она реализует паттерн "Деньги" (Money pattern), описанный в книге "Patterns of Enterprise Application Architecture" Мартина Фаулера, чтобы решить проблемы, связанные с обработкой денег в программировании. Основная цель библиотеки - создать повторно используемый класс Money в PHP, который учитывает все тонкости и сложности работы с денежными значениями, включая валюты и округление. `use MoneyCurrency; use MoneyMoney;
$fiver = new Money(500, new Currency('USD')); // or shorter: $fiver = Money::USD(500);
$value1 = Money::EUR(800); // €8.00 $value2 = Money::EUR(500); // €5.00
$result = $value1->add($value2); // €13.00 Основные принципы:
- Type Safety Эта библиотека абстрагирует концепции вокруг Денег, хотя с минимальной проверкой во время выполнения. Мы пытаемся максимально использовать типизацию PHP 8, но иногда вы можете столкнуться с параметрами типа string, которые документированы как numeric-string: если вы столкнётесь с такими параметрами, это означает, что содержащееся в них значение должно быть строкой, которая проходит проверку assert(is_numeric(<ваша-строка>)).
- Immutability Созданный интанс не может быть изменен. ->add и прочие методы всегда возвращают новую копию.
- JSON `use MoneyMoney;
$money = Money::USD(350); $json = json_encode($money); echo $json; // outputs '{"amount":"350","currency":"USD"}'``