QueryStatement   A
last analyzed

Complexity

Total Complexity 2

Size/Duplication

Total Lines 67
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 2
eloc 19
c 1
b 0
f 0
dl 0
loc 67
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A getBindParams() 0 3 1
A __construct() 0 10 1
1
<?php
2
/**
3
 * Created by PhpStorm.
4
 * Author: Adrian Dumitru
5
 * Date: 4/22/2017 4:16 AM
6
 */
7
8
namespace Qpdb\QueryBuilder\Statements;
9
10
11
use Qpdb\QueryBuilder\Dependencies\QueryException;
12
use Qpdb\QueryBuilder\Dependencies\QueryStructure;
13
use Qpdb\QueryBuilder\QueryBuild;
14
use Qpdb\QueryBuilder\Traits\ColumnValidation;
15
use Qpdb\QueryBuilder\Traits\TableValidation;
16
use Qpdb\QueryBuilder\Traits\Utilities;
17
18
abstract class QueryStatement
19
{
20
21
	use Utilities, TableValidation, ColumnValidation;
22
23
24
	/**
25
	 * Statements
26
	 */
27
	const QUERY_STATEMENT_SELECT = 'SELECT';
28
	const QUERY_STATEMENT_UPDATE = 'UPDATE';
29
	const QUERY_STATEMENT_DELETE = 'DELETE';
30
	const QUERY_STATEMENT_INSERT = 'INSERT';
31
	const QUERY_STATEMENT_CUSTOM = 'CUSTOM';
32
33
34
	/**
35
	 * @var string
36
	 */
37
	protected $statement;
38
39
	/**
40
	 * @var QueryBuild
41
	 */
42
	protected $queryBuild;
43
44
	/**
45
	 * @var QueryStructure
46
	 */
47
	protected $queryStructure;
48
49
	/**
50
	 * @var array
51
	 */
52
	protected $usedInstanceIds = [];
53
54
	/**
55
	 * @var string
56
	 */
57
	protected $tablePrefix;
58
59
60
	/**
61
	 * QueryStatement constructor.
62
	 * @param QueryBuild $queryBuild
63
	 * @param string|QuerySelect $table
64
	 * @throws QueryException
65
	 */
66
	public function __construct( QueryBuild $queryBuild, $table = '' )
67
	{
68
69
		$table = $this->validateTable( $table );
70
71
		$this->queryBuild = $queryBuild;
72
		$this->queryStructure = new QueryStructure();
73
		$this->queryStructure->setElement( QueryStructure::TABLE, $table );
74
		$this->queryStructure->setElement( QueryStructure::STATEMENT, $this->statement );
75
		$this->queryStructure->setElement( QueryStructure::QUERY_TYPE, $this->queryBuild->getType() );
76
77
	}
78
79
	/**
80
	 * @return mixed
81
	 */
82
	public function getBindParams()
83
	{
84
		return $this->queryStructure->getElement( QueryStructure::BIND_PARAMS );
85
	}
86
87
88
}