Transaction::getBindParams()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 7
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 4
c 1
b 0
f 0
dl 0
loc 7
rs 10
cc 2
nc 2
nop 0
1
<?php
2
/**
3
 * Created by PhpStorm.
4
 * User: Adi
5
 * Date: 8/25/2018
6
 * Time: 12:28 PM
7
 */
8
9
namespace Qpdb\QueryBuilder\Statements;
10
11
12
use Qpdb\Common\Helpers\Arrays;
13
use Qpdb\PdoWrapper\PdoWrapperService;
14
15
class Transaction implements QueryStatementInterface
16
{
17
	/**
18
	 * @var QueryStatementInterface[];
19
	 */
20
	private $transaction;
21
22
	/**
23
	 * @param QueryStatementInterface ...$queries
24
	 * @return $this
25
	 */
26
	public function withQuery( QueryStatementInterface ...$queries ) {
27
		$queries = Arrays::flattenValues( $queries );
28
		foreach ( $queries as $query ) {
29
			$this->transaction = $query;
30
		}
31
32
		return $this;
33
	}
34
35
	/**
36
	 * @param int $replacement
37
	 * @return array
38
	 */
39
	public function getSyntax( $replacement = self::REPLACEMENT_NONE ) {
40
		$queries = [];
41
		foreach ( $this->transaction as $queryStatement ) {
42
			$queries[] = $queryStatement->getSyntax( $replacement );
43
		}
44
45
		return $queries;
46
	}
47
48
	/**
49
	 * @param \Closure $function
50
	 * @param array    $params
51
	 * @return mixed|null
52
	 */
53
	public function executeFunction( \Closure $function, array $params = [] ) {
54
		return PdoWrapperService::getInstance()->transaction( $function, $params );
55
	}
56
57
	/**
58
	 * @return mixed|null
59
	 */
60
	public function execute() {
61
		$transaction = (array)$this->transaction;
62
63
		return PdoWrapperService::getInstance()->transaction(
64
			function() use ( $transaction ) {
65
				$i = 0;
66
				foreach ( $transaction as $queryStatement ) {
67
					$queryStatement->execute();
68
					$i++;
69
				}
70
71
				return $i;
72
			}
73
		);
74
	}
75
76
	/**
77
	 * @return array
78
	 */
79
	public function getBindParams() {
80
		$queries = [];
81
		foreach ( $this->transaction as $queryStatement ) {
82
			$queries[] = $queryStatement->getBindParams();
83
		}
84
85
		return $queries;
86
	}
87
}