Code Duplication    Length = 45-45 lines in 2 locations

src/voku/db/Result.php 2 locations

@@ 838-882 (lines=45) @@
835
   *
836
   * @return object|false <p><strong>false</strong> on error</p>
837
   */
838
  public function fetchObject($class = '', array $params = null, bool $reset = false)
839
  {
840
    if ($reset === true) {
841
      $this->reset();
842
    }
843
844
    // fallback
845
    if (!$class || $class === 'stdClass') {
846
      /** @noinspection ClassConstantCanBeUsedInspection */
847
      $class = '\stdClass';
848
    }
849
850
    $row = $this->fetch_assoc();
851
    $row = $row ? $this->cast($row) : false;
852
853
    if (!$row) {
854
      return false;
855
    }
856
857
    if (\is_object($class)) {
858
859
      $classTmp = $class;
860
861
    } elseif ($class && $params) {
862
863
      $reflectorTmp = new \ReflectionClass($class);
864
      $classTmp = $reflectorTmp->newInstanceArgs($params);
865
866
    } else {
867
868
      $classTmp = new $class;
869
870
    }
871
872
    $propertyAccessor = PropertyAccess::createPropertyAccessor();
873
    foreach ($row as $key => $value) {
874
      if ($class === '\stdClass') {
875
        $classTmp->{$key} = $value;
876
      } else {
877
        $propertyAccessor->setValue($classTmp, $key, $value);
878
      }
879
    }
880
881
    return $classTmp;
882
  }
883
884
  /**
885
   * Returns all rows at once as key-value pairs.
@@ 972-1016 (lines=45) @@
969
   *
970
   * @return \Generator
971
   */
972
  public function fetchYield($class = '', array $params = null, bool $reset = false): \Generator
973
  {
974
    if ($reset === true) {
975
      $this->reset();
976
    }
977
978
    // fallback
979
    if (!$class || $class === 'stdClass') {
980
      /** @noinspection ClassConstantCanBeUsedInspection */
981
      $class = '\stdClass';
982
    }
983
984
    if (\is_object($class)) {
985
986
      $classTmp = $class;
987
988
    } elseif ($class && $params) {
989
990
      $reflectorTmp = new \ReflectionClass($class);
991
      $classTmp = $reflectorTmp->newInstanceArgs($params);
992
993
    } else {
994
995
      $classTmp = new $class;
996
997
    }
998
999
    $row = $this->fetch_assoc();
1000
    $row = $row ? $this->cast($row) : false;
1001
1002
    if (!$row) {
1003
      return;
1004
    }
1005
1006
    $propertyAccessor = PropertyAccess::createPropertyAccessor();
1007
    foreach ($row as $key => $value) {
1008
      if ($class === '\stdClass') {
1009
        $classTmp->{$key} = $value;
1010
      } else {
1011
        $propertyAccessor->setValue($classTmp, $key, $value);
1012
      }
1013
    }
1014
1015
    yield $classTmp;
1016
  }
1017
1018
  /**
1019
   * @return mixed