public function 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.

4 calls to DatabaseStatementPrefetch::current()
DatabaseStatementPrefetch::fetch in drupal/includes/database/prefetch.inc
DatabaseStatementPrefetch::fetchAll in drupal/includes/database/prefetch.inc
DatabaseStatementPrefetch::fetchAllAssoc in drupal/includes/database/prefetch.inc
Returns the result set as an associative array keyed by the given field.
DatabaseStatementPrefetch::fetchObject in drupal/includes/database/prefetch.inc

File

drupal/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;
        }
    }
  }
}