Files
eCert-MBIP/vendor/symfony/polyfill-php86/Php86.php

75 lines
1.7 KiB
PHP

<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Polyfill\Php86;
/**
* @author kylekatarnls <kylekatarnls@gmail.com>
*
* @internal
*/
final class Php86
{
/**
* @template Value
* @template Minimum
* @template Maximum
*
* @param Value $value
* @param Minimum $min
* @param Maximum $max
*
* @return Value|Minimum|Maximum
*/
public static function clamp($value, $min, $max)
{
if (\is_float($min) && is_nan($min)) {
self::throwValueErrorIfAvailable('clamp(): Argument #2 ($min) must not be NAN');
}
if (\is_float($max) && is_nan($max)) {
self::throwValueErrorIfAvailable('clamp(): Argument #3 ($max) must not be NAN');
}
if ($max < $min) {
self::throwValueErrorIfAvailable('clamp(): Argument #2 ($min) must be smaller than or equal to argument #3 ($max)');
}
if ($value > $max) {
return $max;
}
if ($value < $min) {
return $min;
}
return $value;
}
private static function throwValueErrorIfAvailable(string $message): void
{
if (!class_exists(\ValueError::class)) {
throw new \InvalidArgumentException($message);
}
throw new \ValueError($message);
}
public static function grapheme_strrev(string $string)
{
if (false === $units = grapheme_str_split($string)) {
return false;
}
return implode('', array_reverse($units));
}
}