File manager - Edit - /var/www/ratemypay/vendor/brick/math/src/Internal/CalculatorRegistry.php
Back
<?php declare(strict_types=1); namespace Brick\Math\Internal; use function extension_loaded; /** * Stores the current Calculator instance used by BigNumber classes. * * @internal */ final class CalculatorRegistry { /** * The Calculator instance in use. */ private static ?Calculator $instance = null; /** * Sets the Calculator instance to use. * * An instance is typically set only in unit tests: autodetect is usually the best option. * * @param Calculator|null $calculator The calculator instance, or null to revert to autodetect. */ final public static function set(?Calculator $calculator) : void { self::$instance = $calculator; } /** * Returns the Calculator instance to use. * * If none has been explicitly set, the fastest available implementation will be returned. * * Note: even though this method is not technically pure, it is considered pure when used in a normal context, when * only relying on autodetect. * * @pure */ final public static function get() : Calculator { /** @phpstan-ignore impure.staticPropertyAccess */ if (self::$instance === null) { /** @phpstan-ignore impure.propertyAssign */ self::$instance = self::detect(); } /** @phpstan-ignore impure.staticPropertyAccess */ return self::$instance; } /** * Returns the fastest available Calculator implementation. * * @pure * @codeCoverageIgnore */ private static function detect() : Calculator { if (extension_loaded('gmp')) { return new Calculator\GmpCalculator(); } if (extension_loaded('bcmath')) { return new Calculator\BcMathCalculator(); } return new Calculator\NativeCalculator(); } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.30 | Generation time: 0 |
proxy
|
phpinfo
|
Settings