summaryrefslogtreecommitdiffstats
path: root/wp-includes/Requests/src/Exception/ArgumentCount.php
diff options
context:
space:
mode:
Diffstat (limited to 'wp-includes/Requests/src/Exception/ArgumentCount.php')
-rw-r--r--wp-includes/Requests/src/Exception/ArgumentCount.php47
1 files changed, 47 insertions, 0 deletions
diff --git a/wp-includes/Requests/src/Exception/ArgumentCount.php b/wp-includes/Requests/src/Exception/ArgumentCount.php
new file mode 100644
index 0000000..b5773dd
--- /dev/null
+++ b/wp-includes/Requests/src/Exception/ArgumentCount.php
@@ -0,0 +1,47 @@
+<?php
+
+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
+ );
+ }
+}