* $teller = Teller::USD(); * * * @param non-empty-string $method * @param array{0?: Money::ROUND_*} $arguments */ public static function __callStatic(string $method, array $arguments): Teller { $currency = new Currency($method); $currencies = new ISOCurrencies(); $parser = new DecimalMoneyParser($currencies); $formatter = new DecimalMoneyFormatter($currencies); $roundingMode = empty($arguments) ? Money::ROUND_HALF_UP : (int) array_shift($arguments); return new Teller( $currency, $parser, $formatter, $roundingMode ); } }