Code Duplication    Length = 45-45 lines in 2 locations

src/voku/db/Result.php 2 locations

@@ 884-928 (lines=45) @@
881
   *
882
   * @return object|false <p><strong>false</strong> on error</p>
883
   */
884
  public function fetchObject($class = '', array $params = null, bool $reset = false)
885
  {
886
    if ($reset === true) {
887
      $this->reset();
888
    }
889
890
    // fallback
891
    if (!$class || $class === 'stdClass') {
892
      /** @noinspection ClassConstantCanBeUsedInspection */
893
      $class = '\stdClass';
894
    }
895
896
    $row = $this->fetch_assoc();
897
    $row = $row ? $this->cast($row) : false;
898
899
    if (!$row) {
900
      return false;
901
    }
902
903
    if (\is_object($class)) {
904
905
      $classTmp = $class;
906
907
    } elseif ($class && $params) {
908
909
      $reflectorTmp = new \ReflectionClass($class);
910
      $classTmp = $reflectorTmp->newInstanceArgs($params);
911
912
    } else {
913
914
      $classTmp = new $class;
915
916
    }
917
918
    $propertyAccessor = PropertyAccess::createPropertyAccessor();
919
    foreach ($row as $key => $value) {
920
      if ($class === '\stdClass') {
921
        $classTmp->{$key} = $value;
922
      } else {
923
        $propertyAccessor->setValue($classTmp, $key, $value);
924
      }
925
    }
926
927
    return $classTmp;
928
  }
929
930
  /**
931
   * Returns all rows at once as key-value pairs.
@@ 1018-1062 (lines=45) @@
1015
   *
1016
   * @return \Generator
1017
   */
1018
  public function fetchYield($class = '', array $params = null, bool $reset = false): \Generator
1019
  {
1020
    if ($reset === true) {
1021
      $this->reset();
1022
    }
1023
1024
    // fallback
1025
    if (!$class || $class === 'stdClass') {
1026
      /** @noinspection ClassConstantCanBeUsedInspection */
1027
      $class = '\stdClass';
1028
    }
1029
1030
    if (\is_object($class)) {
1031
1032
      $classTmp = $class;
1033
1034
    } elseif ($class && $params) {
1035
1036
      $reflectorTmp = new \ReflectionClass($class);
1037
      $classTmp = $reflectorTmp->newInstanceArgs($params);
1038
1039
    } else {
1040
1041
      $classTmp = new $class;
1042
1043
    }
1044
1045
    $row = $this->fetch_assoc();
1046
    $row = $row ? $this->cast($row) : false;
1047
1048
    if (!$row) {
1049
      return;
1050
    }
1051
1052
    $propertyAccessor = PropertyAccess::createPropertyAccessor();
1053
    foreach ($row as $key => $value) {
1054
      if ($class === '\stdClass') {
1055
        $classTmp->{$key} = $value;
1056
      } else {
1057
        $propertyAccessor->setValue($classTmp, $key, $value);
1058
      }
1059
    }
1060
1061
    yield $classTmp;
1062
  }
1063
1064
  /**
1065
   * @return mixed