PHP 8.5 updates
This commit is contained in:
@@ -114,7 +114,7 @@ class Encoding
|
||||
(($char != $r_char && (!self::$mb_error_char ||
|
||||
in_array(self::$mb_error_char, ['none', 'long', 'entity']))) ||
|
||||
($char != $r_char && $r_char == self::$mb_error_char && self::$mb_error_char)) &&
|
||||
ord($char) != 194
|
||||
ord($char[0]) != 194
|
||||
) {
|
||||
$failed[] = $char;
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ class Byte
|
||||
public const BYTE_FORMAT_NOSPACE = 1;
|
||||
public const BYTE_FORMAT_ADJUST = 2;
|
||||
public const BYTE_FORMAT_SI = 4;
|
||||
public const RETURN_AS_STRING = 8;
|
||||
|
||||
/**
|
||||
* This function replaces the old byteStringFormat
|
||||
@@ -119,7 +120,9 @@ class Byte
|
||||
* @param int $flags bitwise flag with use space turned on
|
||||
* BYTE_FORMAT_SI: use 1000 instead of 1024
|
||||
* @return string|int|float converted value or original value
|
||||
* @throws \InvalidArgumentException 1: no valid flag set
|
||||
* @throws \InvalidArgumentException no valid flag set
|
||||
* @throws \LengthException number too large to convert to int
|
||||
* @throws \RuntimeException BCMath extension not loaded if flag is set to string
|
||||
*/
|
||||
public static function stringByteFormat(string|int|float $number, int $flags = 0): string|int|float
|
||||
{
|
||||
@@ -129,7 +132,12 @@ class Byte
|
||||
} else {
|
||||
$si = false;
|
||||
}
|
||||
if ($flags != 0 && $flags != 4) {
|
||||
if ($flags & self::RETURN_AS_STRING) {
|
||||
$return_as_string = true;
|
||||
} else {
|
||||
$return_as_string = false;
|
||||
}
|
||||
if ($flags != 0 && $flags != 4 && $flags != 8 && $flags != 12) {
|
||||
throw new \InvalidArgumentException("Invalid flags parameter: $flags", 1);
|
||||
}
|
||||
// matches in regex
|
||||
@@ -142,6 +150,10 @@ class Byte
|
||||
strtolower((string)$number),
|
||||
$matches
|
||||
);
|
||||
$number_negative = false;
|
||||
if (!empty($matches[1])) {
|
||||
$number_negative = true;
|
||||
}
|
||||
if (isset($matches[2]) && isset($matches[3])) {
|
||||
// remove all non valid characters from the number
|
||||
$number = preg_replace('/[^0-9\.]/', '', $matches[2]);
|
||||
@@ -152,12 +164,48 @@ class Byte
|
||||
if ($unit) {
|
||||
$number = $number * pow($si ? 1000 : 1024, stripos($valid_units_, $unit[0]) ?: 0);
|
||||
}
|
||||
// if the number is too large, we cannot convert to int directly
|
||||
if ($number <= PHP_INT_MIN || $number >= PHP_INT_MAX) {
|
||||
// if we do not want to convert to string
|
||||
if (!$return_as_string) {
|
||||
throw new \LengthException(
|
||||
'Number too large be converted to int: ' . (string)$number
|
||||
);
|
||||
}
|
||||
// for string, check if bcmath is loaded, if not this will not work
|
||||
if (!extension_loaded('bcmath')) {
|
||||
throw new \RuntimeException(
|
||||
'Number too large be converted to int and BCMath extension not loaded: ' . (string)$number
|
||||
);
|
||||
}
|
||||
}
|
||||
// string return
|
||||
if ($return_as_string) {
|
||||
// return as string to avoid overflow
|
||||
// $number = (string)round($number);
|
||||
$number = bcmul(number_format(
|
||||
$number,
|
||||
12,
|
||||
'.',
|
||||
''
|
||||
), "1");
|
||||
if ($number_negative) {
|
||||
$number = '-' . $number;
|
||||
}
|
||||
return $number;
|
||||
}
|
||||
// convert to INT to avoid +E output
|
||||
$number = (int)round($number);
|
||||
// if negative input, keep nnegative
|
||||
if (!empty($matches[1])) {
|
||||
if ($number_negative) {
|
||||
$number *= -1;
|
||||
}
|
||||
// check if number is negative but should be, this is Lenght overflow
|
||||
if (!$number_negative && $number < 0) {
|
||||
throw new \LengthException(
|
||||
'Number too large be converted to int: ' . (string)$number
|
||||
);
|
||||
}
|
||||
}
|
||||
// if not matching return as is
|
||||
return $number;
|
||||
|
||||
@@ -62,10 +62,15 @@ class Math
|
||||
*
|
||||
* @param float $number Number to cubic root
|
||||
* @return float Calculated value
|
||||
* @throws \InvalidArgumentException if $number is negative
|
||||
*/
|
||||
public static function cbrt(float|int $number): float
|
||||
{
|
||||
return pow((float)$number, 1.0 / 3);
|
||||
$value = pow((float)$number, 1.0 / 3);
|
||||
if (is_nan($value)) {
|
||||
throw new \InvalidArgumentException('cube root from this number is not supported: ' . $number);
|
||||
}
|
||||
return $value;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -291,7 +291,7 @@ class ErrorMessage
|
||||
*/
|
||||
public function getLastErrorMsg(): array
|
||||
{
|
||||
return $this->error_str[array_key_last($this->error_str)] ?? [
|
||||
return $this->error_str[array_key_last($this->error_str) ?? -1] ?? [
|
||||
'level' => '',
|
||||
'str' => '',
|
||||
'id' => '',
|
||||
|
||||
@@ -365,9 +365,6 @@ class Image
|
||||
imagepng($thumb, $thumbnail_write_path . $thumbnail);
|
||||
break;
|
||||
}
|
||||
// free up resources (in case we are called in a loop)
|
||||
imagedestroy($source);
|
||||
imagedestroy($thumb);
|
||||
} else {
|
||||
throw new \RuntimeException(
|
||||
'Invalid source image file. Only JPEG/PNG are allowed: ' . $filename,
|
||||
@@ -543,8 +540,6 @@ class Image
|
||||
imagepng($img, $filename);
|
||||
break;
|
||||
}
|
||||
// clean up image if we have an image
|
||||
imagedestroy($img);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -614,8 +614,6 @@ class Curl implements Interface\RequestsInterface
|
||||
// print "CURLINFO_HEADER_OUT: <pre>" . curl_getinfo($handle, CURLINFO_HEADER_OUT) . "</pre>";
|
||||
// get response code and bail on not authorized
|
||||
$http_response = $this->handleCurlResponse($handle, $http_result, $options['http_errors']);
|
||||
// close handler
|
||||
$this->handleCurlClose($handle);
|
||||
// return response and result
|
||||
return [
|
||||
'code' => (string)$http_response,
|
||||
@@ -838,17 +836,6 @@ class Curl implements Interface\RequestsInterface
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* close the current curl handle
|
||||
*
|
||||
* @param \CurlHandle $handle
|
||||
* @return void
|
||||
*/
|
||||
private function handleCurlClose(\CurlHandle $handle): void
|
||||
{
|
||||
curl_close($handle);
|
||||
}
|
||||
|
||||
// *********************************************************************
|
||||
// MARK: PUBLIC METHODS
|
||||
// *********************************************************************
|
||||
|
||||
Reference in New Issue
Block a user