aboutsummaryrefslogtreecommitdiffhomepage
path: root/vendor/symfony/intl/Symfony/Component/Intl/Globals/IntlGlobals.php
blob: 6da000111f493fd5c035a6e8b17cb6409ad9c617 (plain) (blame)
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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
<?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\Component\Intl\Globals;

/**
 * Provides fake static versions of the global functions in the intl extension
 *
 * @author Bernhard Schussek <bschussek@gmail.com>
 */
abstract class IntlGlobals
{
    /**
     * Indicates that no error occurred
     *
     * @var integer
     */
    const U_ZERO_ERROR = 0;

    /**
     * Indicates that an invalid argument was passed
     *
     * @var integer
     */
    const U_ILLEGAL_ARGUMENT_ERROR = 1;

    /**
     * Indicates that the parse() operation failed
     *
     * @var integer
     */
    const U_PARSE_ERROR = 9;

    /**
     * All known error codes
     *
     * @var array
     */
    private static $errorCodes = array(
        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
     *
     * @var integer
     */
    private static $errorCode = self::U_ZERO_ERROR;

    /**
     * The error code of the last operation
     *
     * @var integer
     */
    private static $errorMessage = 'U_ZERO_ERROR';

    /**
     * Returns whether the error code indicates a failure
     *
     * @param integer $errorCode The error code returned by IntlGlobals::getErrorCode()
     *
     * @return Boolean
     */
    public static function isFailure($errorCode)
    {
        return isset(self::$errorCodes[$errorCode])
            && $errorCode > self::U_ZERO_ERROR;
    }

    /**
     * Returns the error code of the last operation
     *
     * Returns IntlGlobals::U_ZERO_ERROR if no error occurred.
     *
     * @return integer
     */
    public static function getErrorCode()
    {
        return self::$errorCode;
    }

    /**
     * Returns the error message of the last operation
     *
     * Returns "U_ZERO_ERROR" if no error occurred.
     *
     * @return string
     */
    public static function getErrorMessage()
    {
        return self::$errorMessage;
    }

    /**
     * Returns the symbolic name for a given error code
     *
     * @param integer $code The error code returned by IntlGlobals::getErrorCode()
     *
     * @return string
     */
    public static function getErrorName($code)
    {
        if (isset(self::$errorCodes[$code])) {
            return self::$errorCodes[$code];
        }

        return '[BOGUS UErrorCode]';
    }

    /**
     * Sets the current error
     *
     * @param integer $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($code, $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;
    }
}