namespace WpOrg\Requests\Exception; | |
use WpOrg\Requests\Exception; | |
/** | |
* Exception for when an incorrect number of arguments are passed to a method. | |
* | |
* Typically, this exception is used when all arguments for a method are optional, | |
* but certain arguments need to be passed together, i.e. a method which can be called | |
* with no arguments or with two arguments, but not with one argument. | |
* | |
* Along the same lines, this exception is also used if a method expects an array | |
* with a certain number of elements and the provided number of elements does not comply. | |
* | |
* @package Requests\Exceptions | |
* @since 2.0.0 | |
*/ | |
final class ArgumentCount extends Exception { | |
/** | |
* Create a new argument count exception with a standardized text. | |
* | |
* @param string $expected The argument count expected as a phrase. | |
* For example: `at least 2 arguments` or `exactly 1 argument`. | |
* @param int $received The actual argument count received. | |
* @param string $type Exception type. | |
* | |
* @return \WpOrg\Requests\Exception\ArgumentCount | |
*/ | |
public static function create($expected, $received, $type) { | |
// phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_debug_backtrace | |
$stack = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 2); | |
return new self( | |
sprintf( | |
'%s::%s() expects %s, %d given', | |
$stack[1]['class'], | |
$stack[1]['function'], | |
$expected, | |
$received | |
), | |
$type | |
); | |
} | |
} | |