wp/wp-includes/Requests/src/Exception/ArgumentCount.php
changeset 21 48c4eec2b7e6
equal deleted inserted replaced
20:7b1b88e27a20 21:48c4eec2b7e6
       
     1 <?php
       
     2 
       
     3 namespace WpOrg\Requests\Exception;
       
     4 
       
     5 use WpOrg\Requests\Exception;
       
     6 
       
     7 /**
       
     8  * Exception for when an incorrect number of arguments are passed to a method.
       
     9  *
       
    10  * Typically, this exception is used when all arguments for a method are optional,
       
    11  * but certain arguments need to be passed together, i.e. a method which can be called
       
    12  * with no arguments or with two arguments, but not with one argument.
       
    13  *
       
    14  * Along the same lines, this exception is also used if a method expects an array
       
    15  * with a certain number of elements and the provided number of elements does not comply.
       
    16  *
       
    17  * @package Requests\Exceptions
       
    18  * @since   2.0.0
       
    19  */
       
    20 final class ArgumentCount extends Exception {
       
    21 
       
    22 	/**
       
    23 	 * Create a new argument count exception with a standardized text.
       
    24 	 *
       
    25 	 * @param string $expected The argument count expected as a phrase.
       
    26 	 *                         For example: `at least 2 arguments` or `exactly 1 argument`.
       
    27 	 * @param int    $received The actual argument count received.
       
    28 	 * @param string $type     Exception type.
       
    29 	 *
       
    30 	 * @return \WpOrg\Requests\Exception\ArgumentCount
       
    31 	 */
       
    32 	public static function create($expected, $received, $type) {
       
    33 		// phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_debug_backtrace
       
    34 		$stack = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 2);
       
    35 
       
    36 		return new self(
       
    37 			sprintf(
       
    38 				'%s::%s() expects %s, %d given',
       
    39 				$stack[1]['class'],
       
    40 				$stack[1]['function'],
       
    41 				$expected,
       
    42 				$received
       
    43 			),
       
    44 			$type
       
    45 		);
       
    46 	}
       
    47 }