89 lines
2.7 KiB
PHP
89 lines
2.7 KiB
PHP
|
<?php
|
||
|
/**
|
||
|
* Invalid_Argument exception class
|
||
|
*
|
||
|
* @package EDD
|
||
|
* @subpackage Classes/Utilities
|
||
|
* @copyright Copyright (c) 2018, Easy Digital Downloads, LLC
|
||
|
* @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
|
||
|
* @since 3.0
|
||
|
*/
|
||
|
namespace EDD\Utils\Exceptions;
|
||
|
|
||
|
/**
|
||
|
* Implements an Invalid_Argument exception thrown when a given
|
||
|
* argument or parameter is invalid.
|
||
|
*
|
||
|
* @since 3.0
|
||
|
*
|
||
|
* @see \InvalidArgumentException
|
||
|
* @see \EDD_Exception
|
||
|
*/
|
||
|
class Invalid_Argument extends \InvalidArgumentException implements \EDD_Exception {
|
||
|
|
||
|
/**
|
||
|
* Type of value.
|
||
|
*
|
||
|
* @since 3.0
|
||
|
* @var string
|
||
|
*/
|
||
|
public static $type = 'argument';
|
||
|
|
||
|
/**
|
||
|
* Exception message.
|
||
|
*
|
||
|
* @since 3.0
|
||
|
* @var string|null
|
||
|
*/
|
||
|
public static $error_message;
|
||
|
|
||
|
/**
|
||
|
* Retrieves an informed Invalid_Argument instance via late-static binding.
|
||
|
*
|
||
|
* @since 3.0
|
||
|
*
|
||
|
* @param string $argument_name Argument or parameter resulting in the exception.
|
||
|
* @param string $method Function or method name the argument or parameter was passed to.
|
||
|
* @param string $context Further context under which to build the exception message. To be
|
||
|
* used by sub-classes when overriding build_message(). Default null.
|
||
|
* @param int $code Optional. Exception code. Default null.
|
||
|
* @param \Exception $previous Optional. Previous exception (used for chaining).
|
||
|
* Default null.
|
||
|
* @return \EDD\Utils\Exceptions\Invalid_Argument Exception instance.
|
||
|
*/
|
||
|
public static function from( $argument_name, $method, $context = null ) {
|
||
|
static::build_message( $argument_name, $method, $context );
|
||
|
|
||
|
return new static( static::$error_message );
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Builds the Invalid_Argument exception message.
|
||
|
*
|
||
|
* Abstracted to allow for completely overriding the exception message in a subclass.
|
||
|
*
|
||
|
* @since 3.0
|
||
|
*
|
||
|
* @param string $argument_name Argument or parameter resulting in the exception.
|
||
|
* @param string $method Function or method name the argument or parameter was passed to.
|
||
|
* @param string $context Further context under which to build the exception message. To be
|
||
|
* used by sub-classes when overriding build_message(). Default null.
|
||
|
* @return string Informed Invalid_Argument message.
|
||
|
*/
|
||
|
public static function build_message( $argument_name, $method, $context = null ) {
|
||
|
if ( ! isset( static::$error_message ) ) {
|
||
|
|
||
|
if ( ! isset( self::$type ) ) {
|
||
|
self::$type = 'argument';
|
||
|
}
|
||
|
|
||
|
self::$error_message = sprintf( 'The \'%1$s\' %2$s is missing or invalid for \'%3$s\'.',
|
||
|
$argument_name,
|
||
|
static::$type,
|
||
|
$method
|
||
|
);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|