Code Duplication    Length = 44-46 lines in 2 locations

src/voku/db/Result.php 2 locations

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