You are here

public function StatementPrefetch::fetchObject in Drupal 9

Same name and namespace in other branches
  1. 8 core/lib/Drupal/Core/Database/StatementPrefetch.php \Drupal\Core\Database\StatementPrefetch::fetchObject()

Fetches the next row and returns it as an object.

The object will be of the class specified by StatementInterface::setFetchMode() or stdClass if not specified.

phpcs:disable Drupal.Commenting @todo Remove PHPCS overrides https://www.drupal.org/node/3194677.

Parameters

string|null $class_name: Name of the created class.

array|null $constructor_arguments: Elements of this array are passed to the constructor. phpcs:enable

Return value

mixed The object of specified class or \stdClass if not specified. Returns FALSE or NULL if there is no next row.

Overrides StatementInterface::fetchObject

File

core/lib/Drupal/Core/Database/StatementPrefetch.php, line 473

Class

StatementPrefetch
An implementation of StatementInterface that prefetches all data.

Namespace

Drupal\Core\Database

Code

public function fetchObject(string $class_name = NULL, array $constructor_arguments = NULL) {
  if (isset($this->currentRow)) {
    if (!isset($class_name)) {

      // Directly cast to an object to avoid a function call.
      $result = (object) $this->currentRow;
    }
    else {
      $this->fetchStyle = \PDO::FETCH_CLASS;
      $this->fetchOptions = [
        'class' => $class_name,
        'constructor_args' => $constructor_arguments,
      ];

      // Grab the row in the format specified above.
      $result = $this
        ->current();

      // Reset the fetch parameters to the value stored using setFetchMode().
      $this->fetchStyle = $this->defaultFetchStyle;
      $this->fetchOptions = $this->defaultFetchOptions;
    }
    $this
      ->next();
    return $result;
  }
  else {
    return FALSE;
  }
}