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 includes/database/prefetch.inc
DatabaseStatementPrefetch::fetchAll in includes/database/prefetch.inc
DatabaseStatementPrefetch::fetchAllAssoc in includes/database/prefetch.inc
Returns the result set as an associative array keyed by the given field.
DatabaseStatementPrefetch::fetchObject in includes/database/prefetch.inc

File

includes/database/prefetch.inc, line 271

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_shift($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;
                }
        }
    }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.