Unverified Commit cc41d94d authored by Alex Pott's avatar Alex Pott
Browse files

Issue #3128548 by anmolgoyal74, yonailo, sokru, joelpittet, daffie,...

Issue #3128548 by anmolgoyal74, yonailo, sokru, joelpittet, daffie, johnwebdev, alexpott, mradcliffe, DuneBL, catch, xjm, mondrake: Add optional parameters to StatementInterface::fetchObject() to be in line with the PDO implementation of the method fetchObject()
parent 2b44c557
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -68,7 +68,7 @@ public function fetchField($index = 0) {
  /**
   * {@inheritdoc}
   */
  public function fetchObject() {
  public function fetchObject(string $class_name = NULL, array $constructor_arguments = NULL) {
    return NULL;
  }

+14 −1
Original line number Diff line number Diff line
@@ -127,8 +127,21 @@ public function fetchField($index = 0);
   *
   * 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.
   *
   * @param string|null $class_name
   *   Name of the created class.
   * @param array|null $constructor_arguments
   *   Elements of this array are passed to the constructor.
   * phpcs:enable
   *
   * @return mixed
   *   The object of specified class or \stdClass if not specified. Returns
   *   FALSE or NULL if there is no next row.
   */
  public function fetchObject();
  public function fetchObject(/* string $class_name = NULL, array $constructor_arguments = NULL */);

  /**
   * Fetches the next row and returns it as an associative array.
+2 −2
Original line number Diff line number Diff line
@@ -418,7 +418,7 @@ public function fetchField($index = 0) {
  /**
   * {@inheritdoc}
   */
  public function fetchObject($class_name = NULL, $constructor_args = []) {
  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.
@@ -428,7 +428,7 @@ public function fetchObject($class_name = NULL, $constructor_args = []) {
        $this->fetchStyle = \PDO::FETCH_CLASS;
        $this->fetchOptions = [
          'class' => $class_name,
          'constructor_args' => $constructor_args,
          'constructor_args' => $constructor_arguments,
        ];
        // Grab the row in the format specified above.
        $result = $this->current();
+2 −2
Original line number Diff line number Diff line
@@ -190,9 +190,9 @@ public function fetchAssoc() {
  /**
   * {@inheritdoc}
   */
  public function fetchObject(string $class_name = NULL) {
  public function fetchObject(string $class_name = NULL, array $constructor_arguments = NULL) {
    if ($class_name) {
      return $this->clientStatement->fetchObject($class_name);
      return $this->clientStatement->fetchObject($class_name, $constructor_arguments);
    }
    return $this->clientStatement->fetchObject();
  }
+20 −1
Original line number Diff line number Diff line
@@ -9,4 +9,23 @@
 * rather than just a stdClass or array. This class is for testing that
 * functionality. (See testQueryFetchClass() below)
 */
class FakeRecord {}
class FakeRecord {

  /**
   * A class variable.
   *
   * @var int
   */
  public $fakeArg;

  /**
   * Constructs a FakeRecord object with an optional constructor argument.
   *
   * @param int $fakeArg
   *   A class variable.
   */
  public function __construct($fakeArg = 0) {
    $this->fakeArg = $fakeArg;
  }

}
Loading