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
 | |
| 			);
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| }
 |