-
-
Notifications
You must be signed in to change notification settings - Fork 7
/
Icu.php
117 lines (103 loc) · 2.96 KB
/
Icu.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <[email protected]>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Polyfill\Intl\Icu;
/**
* Provides fake static versions of the global functions in the intl extension.
*
* @author Bernhard Schussek <[email protected]>
*
* @internal
*/
abstract class Icu
{
/**
* Indicates that no error occurred.
*/
public const U_ZERO_ERROR = 0;
/**
* Indicates that an invalid argument was passed.
*/
public const U_ILLEGAL_ARGUMENT_ERROR = 1;
/**
* Indicates that the parse() operation failed.
*/
public const U_PARSE_ERROR = 9;
/**
* All known error codes.
*/
private static $errorCodes = [
self::U_ZERO_ERROR => 'U_ZERO_ERROR',
self::U_ILLEGAL_ARGUMENT_ERROR => 'U_ILLEGAL_ARGUMENT_ERROR',
self::U_PARSE_ERROR => 'U_PARSE_ERROR',
];
/**
* The error code of the last operation.
*/
private static $errorCode = self::U_ZERO_ERROR;
/**
* The error code of the last operation.
*/
private static $errorMessage = 'U_ZERO_ERROR';
/**
* Returns whether the error code indicates a failure.
*
* @param int $errorCode The error code returned by Icu::getErrorCode()
*/
public static function isFailure(int $errorCode): bool
{
return isset(self::$errorCodes[$errorCode])
&& $errorCode > self::U_ZERO_ERROR;
}
/**
* Returns the error code of the last operation.
*
* Returns Icu::U_ZERO_ERROR if no error occurred.
*
* @return int
*/
public static function getErrorCode()
{
return self::$errorCode;
}
/**
* Returns the error message of the last operation.
*
* Returns "U_ZERO_ERROR" if no error occurred.
*/
public static function getErrorMessage(): string
{
return self::$errorMessage;
}
/**
* Returns the symbolic name for a given error code.
*
* @param int $code The error code returned by Icu::getErrorCode()
*/
public static function getErrorName(int $code): string
{
return self::$errorCodes[$code] ?? '[BOGUS UErrorCode]';
}
/**
* Sets the current error.
*
* @param int $code One of the error constants in this class
* @param string $message The ICU class error message
*
* @throws \InvalidArgumentException If the code is not one of the error constants in this class
*/
public static function setError(int $code, string $message = '')
{
if (!isset(self::$errorCodes[$code])) {
throw new \InvalidArgumentException(sprintf('No such error code: "%s".', $code));
}
self::$errorMessage = $message ? sprintf('%s: %s', $message, self::$errorCodes[$code]) : self::$errorCodes[$code];
self::$errorCode = $code;
}
}