summaryrefslogtreecommitdiff
path: root/vendor/doctrine/orm/src/Internal/NoUnknownNamedArguments.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/doctrine/orm/src/Internal/NoUnknownNamedArguments.php')
-rw-r--r--vendor/doctrine/orm/src/Internal/NoUnknownNamedArguments.php55
1 files changed, 55 insertions, 0 deletions
diff --git a/vendor/doctrine/orm/src/Internal/NoUnknownNamedArguments.php b/vendor/doctrine/orm/src/Internal/NoUnknownNamedArguments.php
new file mode 100644
index 0000000..7584744
--- /dev/null
+++ b/vendor/doctrine/orm/src/Internal/NoUnknownNamedArguments.php
@@ -0,0 +1,55 @@
1<?php
2
3declare(strict_types=1);
4
5namespace Doctrine\ORM\Internal;
6
7use BadMethodCallException;
8
9use function array_filter;
10use function array_is_list;
11use function array_keys;
12use function array_values;
13use function assert;
14use function debug_backtrace;
15use function implode;
16use function is_string;
17use function sprintf;
18
19use const DEBUG_BACKTRACE_IGNORE_ARGS;
20
21/**
22 * Checks if a variadic parameter contains unexpected named arguments.
23 *
24 * @internal
25 */
26trait NoUnknownNamedArguments
27{
28 /**
29 * @param TItem[] $parameter
30 *
31 * @template TItem
32 * @psalm-assert list<TItem> $parameter
33 */
34 private static function validateVariadicParameter(array $parameter): void
35 {
36 if (array_is_list($parameter)) {
37 return;
38 }
39
40 [, $trace] = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
41 assert(isset($trace['class']));
42
43 $additionalArguments = array_values(array_filter(
44 array_keys($parameter),
45 is_string(...),
46 ));
47
48 throw new BadMethodCallException(sprintf(
49 'Invalid call to %s::%s(), unknown named arguments: %s',
50 $trace['class'],
51 $trace['function'],
52 implode(', ', $additionalArguments),
53 ));
54 }
55}