Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
37.50% |
3 / 8 |
CRAP | |
44.44% |
8 / 18 |
Query | |
0.00% |
0 / 1 |
|
50.00% |
5 / 10 |
27.15 | |
44.44% |
8 / 18 |
__construct | |
100.00% |
1 / 1 |
1 | |
100.00% |
6 / 6 |
|||
__sleep | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
__wakeup | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
__clone | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
execute | |
100.00% |
1 / 1 |
1 | |
100.00% |
0 / 0 |
|||
__toString | |
100.00% |
1 / 1 |
1 | |
100.00% |
0 / 0 |
|||
uniqueIdentifier | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
nextPlaceholder | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
comment | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
getComments | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 1 |
<?php | |
/** | |
* @file | |
* Contains \Drupal\Core\Database\Query\Query. | |
*/ | |
namespace Drupal\Core\Database\Query; | |
use Drupal\Core\Database\Database; | |
use Drupal\Core\Database\Connection; | |
/** | |
* Base class for query builders. | |
* | |
* Note that query builders use PHP's magic __toString() method to compile the | |
* query object into a prepared statement. | |
*/ | |
abstract class Query implements PlaceholderInterface { | |
/** | |
* The connection object on which to run this query. | |
* | |
* @var \Drupal\Core\Database\Connection | |
*/ | |
protected $connection; | |
/** | |
* The target of the connection object. | |
* | |
* @var string | |
*/ | |
protected $connectionTarget; | |
/** | |
* The key of the connection object. | |
* | |
* @var string | |
*/ | |
protected $connectionKey; | |
/** | |
* The query options to pass on to the connection object. | |
* | |
* @var array | |
*/ | |
protected $queryOptions; | |
/** | |
* A unique identifier for this query object. | |
*/ | |
protected $uniqueIdentifier; | |
/** | |
* The placeholder counter. | |
*/ | |
protected $nextPlaceholder = 0; | |
/** | |
* An array of comments that can be prepended to a query. | |
* | |
* @var array | |
*/ | |
protected $comments = array(); | |
/** | |
* Constructs a Query object. | |
* | |
* @param \Drupal\Core\Database\Connection $connection | |
* Database connection object. | |
* @param array $options | |
* Array of query options. | |
*/ | |
public function __construct(Connection $connection, $options) { | |
$this->uniqueIdentifier = uniqid('', TRUE); | |
$this->connection = $connection; | |
$this->connectionKey = $this->connection->getKey(); | |
$this->connectionTarget = $this->connection->getTarget(); | |
$this->queryOptions = $options; | |
} | |
/** | |
* Implements the magic __sleep function to disconnect from the database. | |
*/ | |
public function __sleep() { | |
$keys = get_object_vars($this); | |
unset($keys['connection']); | |
return array_keys($keys); | |
} | |
/** | |
* Implements the magic __wakeup function to reconnect to the database. | |
*/ | |
public function __wakeup() { | |
$this->connection = Database::getConnection($this->connectionTarget, $this->connectionKey); | |
} | |
/** | |
* Implements the magic __clone function. | |
*/ | |
public function __clone() { | |
$this->uniqueIdentifier = uniqid('', TRUE); | |
} | |
/** | |
* Runs the query against the database. | |
* | |
* @return \Drupal\Core\Database\StatementInterface|null | |
* A prepared statement, or NULL if the query is not valid. | |
*/ | |
abstract protected function execute(); | |
/** | |
* Implements PHP magic __toString method to convert the query to a string. | |
* | |
* The toString operation is how we compile a query object to a prepared | |
* statement. | |
* | |
* @return string | |
* A prepared statement query string for this object. | |
*/ | |
abstract public function __toString(); | |
/** | |
* Returns a unique identifier for this object. | |
*/ | |
public function uniqueIdentifier() { | |
return $this->uniqueIdentifier; | |
} | |
/** | |
* Gets the next placeholder value for this query object. | |
* | |
* @return int | |
* The next placeholder value. | |
*/ | |
public function nextPlaceholder() { | |
return $this->nextPlaceholder++; | |
} | |
/** | |
* Adds a comment to the query. | |
* | |
* By adding a comment to a query, you can more easily find it in your | |
* query log or the list of active queries on an SQL server. This allows | |
* for easier debugging and allows you to more easily find where a query | |
* with a performance problem is being generated. | |
* | |
* The comment string will be sanitized to remove * / and other characters | |
* that may terminate the string early so as to avoid SQL injection attacks. | |
* | |
* @param $comment | |
* The comment string to be inserted into the query. | |
* | |
* @return $this | |
*/ | |
public function comment($comment) { | |
$this->comments[] = $comment; | |
return $this; | |
} | |
/** | |
* Returns a reference to the comments array for the query. | |
* | |
* Because this method returns by reference, alter hooks may edit the comments | |
* array directly to make their changes. If just adding comments, however, the | |
* use of comment() is preferred. | |
* | |
* Note that this method must be called by reference as well: | |
* @code | |
* $comments =& $query->getComments(); | |
* @endcode | |
* | |
* @return array | |
* A reference to the comments array structure. | |
*/ | |
public function &getComments() { | |
return $this->comments; | |
} | |
} |