Source of file class.gb-error.php
Size: 6,324 Bytes - Last Modified: 2017-07-17T16:46:02+00:00
/home/travis/build/Limych/GeniBase/src/gb/class.gb-error.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254 | <?php /** * GeniBase Error API. * * Contains the GB_Error class and the is_gb_error() function. * * @package GeniBase * * @copyright Copyright © WordPress Team * @copyright Partially copyright © 2015, Andrey Khrolenok (andrey@khrolenok.ru) */ /** * GeniBase Error class. * * Container for checking for GeniBase errors and error messages. Return * GB_Error and use {@link is_gb_error()} to check if this class is returned. * Many core GeniBase functions pass this class in the event of an error and * if not handled properly will result in code errors. * * @package GeniBase * @since 2.3.0 */ class GB_Error { /** * Stores the list of errors. * * @since 2.3.0 * @var array * @access private */ private $errors = array(); /** * Stores the list of data for error codes. * * @since 2.3.0 * @var array * @access private */ private $error_data = array(); /** * Initialize the error. * * If `$code` is empty, the other parameters will be ignored. * When `$code` is not empty, `$message` will be used even if * it is empty. The `$data` parameter will be used only if it * is not empty. * * Though the class is constructed with a single error code and * message, multiple codes can be added using the `add()` method. * * @since 2.3.0 * * @param string|int $code * Error code * @param string $message * Error message * @param mixed $data * Optional. Error data. * @return GB_Error */ public function __construct($code = '', $message = '', $data = '') { if (empty($code)) return; $this->errors[$code][] = $message; if (! empty($data)) $this->error_data[$code] = $data; } /** * Retrieve all error codes. * * @since 2.3.0 * @access public * * @return array List of error codes, if available. */ public function get_error_codes() { if (empty($this->errors)) return array(); return array_keys($this->errors); } /** * Retrieve first error code available. * * @since 2.3.0 * @access public * * @return string|int Empty string, if no error codes. */ public function get_error_code() { $codes = $this->get_error_codes(); if (empty($codes)) return ''; return $codes[0]; } /** * Retrieve all error messages or error messages matching code. * * @since 2.3.0 * * @param string|int $code * Optional. Retrieve messages matching code, if exists. * @return array Error strings on success, or empty array on failure (if using code parameter). */ public function get_error_messages($code = '') { // Return all messages if no code specified. if (empty($code)) { $all_messages = array(); foreach ((array) $this->errors as $code => $messages) $all_messages = array_merge($all_messages, $messages); return $all_messages; } if (isset($this->errors[$code])) return $this->errors[$code]; else return array(); } /** * Get single error message. * * This will get the first message available for the code. If no code is * given then the first code available will be used. * * @since 2.3.0 * * @param string|int $code * Optional. Error code to retrieve message. * @return string */ public function get_error_message($code = '') { if (empty($code)) $code = $this->get_error_code(); $messages = $this->get_error_messages($code); if (empty($messages)) return ''; return $messages[0]; } /** * Retrieve error data for error code. * * @since 2.3.0 * * @param string|int $code * Optional. Error code. * @return mixed Null, if no errors. */ public function get_error_data($code = '') { if (empty($code)) $code = $this->get_error_code(); if (isset($this->error_data[$code])) return $this->error_data[$code]; return null; } /** * Add an error or append additional message to an existing error. * * @since 2.3.0 * @access public * * @param string|int $code * Error code. * @param string $message * Error message. * @param mixed $data * Optional. Error data. */ public function add($code, $message, $data = '') { $this->errors[$code][] = $message; if (! empty($data)) $this->error_data[$code] = $data; } /** * Add data for error code. * * The error code can only contain one error data. * * @since 2.3.0 * * @param mixed $data * Error data. * @param string|int $code * Error code. */ public function add_data($data, $code = '') { if (empty($code)) $code = $this->get_error_code(); $this->error_data[$code] = $data; } /** * Removes the specified error. * * This function removes all error messages associated with the specified * error code, along with any error data for that code. * * @since 2.3.0 * * @param string|int $code * Error code. */ public function remove($code) { unset($this->errors[$code]); unset($this->error_data[$code]); } } /** * Check whether variable is a GeniBase Error. * * Returns true if $thing is an object of the GB_Error class. * * @since 2.3.0 * * @param mixed $thing * Check if unknown variable is a GB_Error object. * @return bool True, if GB_Error. False, if not GB_Error. */ function is_gb_error($thing) { if (is_object($thing) && is_a($thing, 'GB_Error')) return true; return false; } |