public function DatabaseStatementPrefetch::current

public DatabaseStatementPrefetch::current()

Return the current row formatted according to the current fetch style.

This is the core method of this class. It grabs the value at the current array position in $this->data and format it according to $this->fetchStyle and $this->fetchMode.

Return value

The current row formatted as requested.

File

includes/database/prefetch.inc, line 271
Database interface code for engines that need complete control over their result sets. For example, SQLite will prefix some column names by the name of the table. We post-process the data, by renaming the column names using the same convention as…

Class

DatabaseStatementPrefetch
An implementation of DatabaseStatementInterface that prefetches all data.

Code

public function current() {
  if (isset($this->currentRow)) {
    switch ($this->fetchStyle) {
      case PDO::FETCH_ASSOC:
        return $this->currentRow;
      case PDO::FETCH_BOTH:
        // PDO::FETCH_BOTH returns an array indexed by both the column name
        // and the column number.
        return $this->currentRow + array_values($this->currentRow);
      case PDO::FETCH_NUM:
        return array_values($this->currentRow);
      case PDO::FETCH_LAZY:
        // We do not do lazy as everything is fetched already. Fallback to
        // PDO::FETCH_OBJ.
      case PDO::FETCH_OBJ:
        return (object) $this->currentRow;
      case PDO::FETCH_CLASS | PDO::FETCH_CLASSTYPE:
        $class_name = array_unshift($this->currentRow);
        // Deliberate no break.
      case PDO::FETCH_CLASS:
        if (!isset($class_name)) {
          $class_name = $this->fetchOptions['class'];
        }
        if (count($this->fetchOptions['constructor_args'])) {
          $reflector = new ReflectionClass($class_name);
          $result = $reflector->newInstanceArgs($this->fetchOptions['constructor_args']);
        }
        else {
          $result = new $class_name();
        }
        foreach ($this->currentRow as $k => $v) {
          $result->$k = $v;
        }
        return $result;
      case PDO::FETCH_INTO:
        foreach ($this->currentRow as $k => $v) {
          $this->fetchOptions['object']->$k = $v;
        }
        return $this->fetchOptions['object'];
      case PDO::FETCH_COLUMN:
        if (isset($this->columnNames[$this->fetchOptions['column']])) {
          return $this->currentRow[$k][$this->columnNames[$this->fetchOptions['column']]];
        }
        else {
          return;
        }
    }
  }
}

© 2001–2016 by the original authors
Licensed under the GNU General Public License, version 2 and later.
Drupal is a registered trademark of Dries Buytaert.
https://api.drupal.org/api/drupal/includes!database!prefetch.inc/function/DatabaseStatementPrefetch::current/7.x