Passed
Push — master ( 9e2434...486cd6 )
by Ron
01:59
created

MySQLExpressionQuoter   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 24
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 3
eloc 15
c 1
b 0
f 0
dl 0
loc 24
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
A quoteExpression() 0 17 3
1
<?php
2
3
namespace Kir\MySQL\Databases\MySQL;
4
5
use Kir\MySQL\Builder\DBExpr;
6
use Kir\MySQL\Builder\Select;
7
use PDO;
8
9
class MySQLExpressionQuoter {
10
	/**
11
	 * @param PDO $pdo
12
	 * @param string $expression
13
	 * @param array<int, null|scalar|array<int, string>|DBExpr|Select> $arguments
14
	 * @return string
15
	 */
16
	public static function quoteExpression(PDO $pdo, string $expression, array $arguments = []): string {
17
		$index = -1;
18
		$func = static function () use ($pdo, $arguments, &$index) {
19
			$index++;
20
			if(array_key_exists($index, $arguments)) {
21
				$argument = $arguments[$index];
22
				$value = MySQLValueQuoter::quote($pdo, $argument);
23
			} elseif(count($arguments) > 0) {
24
				$args = $arguments;
25
				$value = array_pop($args);
26
				$value = MySQLValueQuoter::quote($pdo, $value);
27
			} else {
28
				$value = 'NULL';
29
			}
30
			return $value;
31
		};
32
		return (string) preg_replace_callback('/(\\?)/', $func, $expression);
33
	}
34
}
35