Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 11 |
CRAP | |
0.00% |
0 / 81 |
| Statement | |
0.00% |
0 / 1 |
|
0.00% |
0 / 11 |
812 | |
0.00% |
0 / 81 |
| __construct | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
| execute | |
0.00% |
0 / 1 |
30 | |
0.00% |
0 / 19 |
|||
| getQueryString | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| fetchCol | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| fetchAllAssoc | |
0.00% |
0 / 1 |
30 | |
0.00% |
0 / 15 |
|||
| fetchAllKeyed | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 7 |
|||
| fetchField | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| fetchAssoc | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| rowCount | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 7 |
|||
| setFetchMode | |
0.00% |
0 / 1 |
20 | |
0.00% |
0 / 10 |
|||
| fetchAll | |
0.00% |
0 / 1 |
30 | |
0.00% |
0 / 12 |
|||
| <?php | |
| /** | |
| * @file | |
| * Contains \Drupal\Core\Database\Statement. | |
| */ | |
| namespace Drupal\Core\Database; | |
| /** | |
| * Default implementation of StatementInterface. | |
| * | |
| * \PDO allows us to extend the \PDOStatement class to provide additional | |
| * functionality beyond that offered by default. We do need extra | |
| * functionality. By default, this class is not driver-specific. If a given | |
| * driver needs to set a custom statement class, it may do so in its | |
| * constructor. | |
| * | |
| * @see http://php.net/pdostatement | |
| */ | |
| class Statement extends \PDOStatement implements StatementInterface { | |
| /** | |
| * Reference to the database connection object for this statement. | |
| * | |
| * The name $dbh is inherited from \PDOStatement. | |
| * | |
| * @var \Drupal\Core\Database\Connection | |
| */ | |
| public $dbh; | |
| /** | |
| * Is rowCount() execution allowed. | |
| * | |
| * @var bool | |
| */ | |
| public $allowRowCount = FALSE; | |
| protected function __construct(Connection $dbh) { | |
| $this->dbh = $dbh; | |
| $this->setFetchMode(\PDO::FETCH_OBJ); | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function execute($args = array(), $options = array()) { | |
| if (isset($options['fetch'])) { | |
| if (is_string($options['fetch'])) { | |
| // \PDO::FETCH_PROPS_LATE tells __construct() to run before properties | |
| // are added to the object. | |
| $this->setFetchMode(\PDO::FETCH_CLASS | \PDO::FETCH_PROPS_LATE, $options['fetch']); | |
| } | |
| else { | |
| $this->setFetchMode($options['fetch']); | |
| } | |
| } | |
| $logger = $this->dbh->getLogger(); | |
| if (!empty($logger)) { | |
| $query_start = microtime(TRUE); | |
| } | |
| $return = parent::execute($args); | |
| if (!empty($logger)) { | |
| $query_end = microtime(TRUE); | |
| $logger->log($this, $args, $query_end - $query_start); | |
| } | |
| return $return; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function getQueryString() { | |
| return $this->queryString; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function fetchCol($index = 0) { | |
| return $this->fetchAll(\PDO::FETCH_COLUMN, $index); | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function fetchAllAssoc($key, $fetch = NULL) { | |
| $return = array(); | |
| if (isset($fetch)) { | |
| if (is_string($fetch)) { | |
| $this->setFetchMode(\PDO::FETCH_CLASS, $fetch); | |
| } | |
| else { | |
| $this->setFetchMode($fetch); | |
| } | |
| } | |
| foreach ($this as $record) { | |
| $record_key = is_object($record) ? $record->$key : $record[$key]; | |
| $return[$record_key] = $record; | |
| } | |
| return $return; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function fetchAllKeyed($key_index = 0, $value_index = 1) { | |
| $return = array(); | |
| $this->setFetchMode(\PDO::FETCH_NUM); | |
| foreach ($this as $record) { | |
| $return[$record[$key_index]] = $record[$value_index]; | |
| } | |
| return $return; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function fetchField($index = 0) { | |
| // Call \PDOStatement::fetchColumn to fetch the field. | |
| return $this->fetchColumn($index); | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function fetchAssoc() { | |
| // Call \PDOStatement::fetch to fetch the row. | |
| return $this->fetch(\PDO::FETCH_ASSOC); | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function rowCount() { | |
| // SELECT query should not use the method. | |
| if ($this->allowRowCount) { | |
| return parent::rowCount(); | |
| } | |
| else { | |
| throw new RowCountException(); | |
| } | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function setFetchMode($mode, $a1 = NULL, $a2 = array()) { | |
| // Call \PDOStatement::setFetchMode to set fetch mode. | |
| // \PDOStatement is picky about the number of arguments in some cases so we | |
| // need to be pass the exact number of arguments we where given. | |
| switch (func_num_args()) { | |
| case 1: | |
| return parent::setFetchMode($mode); | |
| case 2: | |
| return parent::setFetchMode($mode, $a1); | |
| case 3: | |
| default: | |
| return parent::setFetchMode($mode, $a1, $a2); | |
| } | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function fetchAll($mode = NULL, $column_index = NULL, $constructor_arguments = NULL) { | |
| // Call \PDOStatement::fetchAll to fetch all rows. | |
| // \PDOStatement is picky about the number of arguments in some cases so we | |
| // need to be pass the exact number of arguments we where given. | |
| switch (func_num_args()) { | |
| case 0: | |
| return parent::fetchAll(); | |
| case 1: | |
| return parent::fetchAll($mode); | |
| case 2: | |
| return parent::fetchAll($mode, $column_index); | |
| case 3: | |
| default: | |
| return parent::fetchAll($mode, $column_index, $constructor_arguments); | |
| } | |
| } | |
| } |