Code Duplication    Length = 38-38 lines in 2 locations

src/voku/db/Result.php 2 locations

@@ 945-982 (lines=38) @@
942
     * @return false|object
943
     *                      <p><strong>false</strong> on error</p>
944
     */
945
    public function fetchObject($class = '', array $params = null, bool $reset = false)
946
    {
947
        if ($reset) {
948
            $this->reset();
949
        }
950
951
        // fallback
952
        if (!$class || $class === 'stdClass') {
953
            $class = \stdClass::class;
954
        }
955
956
        $row = $this->fetch_assoc();
957
        $row = $row ? $this->cast($row) : false;
958
959
        if (!$row) {
960
            return false;
961
        }
962
963
        if (\is_object($class)) {
964
            $classTmp = $class;
965
        } elseif ($class && $params) {
966
            $reflectorTmp = new \ReflectionClass($class);
967
            $classTmp = $reflectorTmp->newInstanceArgs($params);
968
        } else {
969
            $classTmp = new $class();
970
        }
971
972
        $propertyAccessor = PropertyAccess::createPropertyAccessor();
973
        foreach ($row as $key => $value) {
974
            if ($class === \stdClass::class) {
975
                $classTmp->{$key} = $value;
976
            } else {
977
                $propertyAccessor->setValue($classTmp, $key, $value);
978
            }
979
        }
980
981
        return $classTmp;
982
    }
983
984
    /**
985
     * Returns all rows at once as key-value pairs.
@@ 1073-1110 (lines=38) @@
1070
     *
1071
     * @return \Generator
1072
     */
1073
    public function fetchYield($class = '', array $params = null, bool $reset = false): \Generator
1074
    {
1075
        if ($reset) {
1076
            $this->reset();
1077
        }
1078
1079
        // fallback
1080
        if (!$class || $class === 'stdClass') {
1081
            $class = \stdClass::class;
1082
        }
1083
1084
        if (\is_object($class)) {
1085
            $classTmp = $class;
1086
        } elseif ($class && $params) {
1087
            $reflectorTmp = new \ReflectionClass($class);
1088
            $classTmp = $reflectorTmp->newInstanceArgs($params);
1089
        } else {
1090
            $classTmp = new $class();
1091
        }
1092
1093
        $row = $this->fetch_assoc();
1094
        $row = $row ? $this->cast($row) : false;
1095
1096
        if (!$row) {
1097
            return;
1098
        }
1099
1100
        $propertyAccessor = PropertyAccess::createPropertyAccessor();
1101
        foreach ($row as $key => $value) {
1102
            if ($class === \stdClass::class) {
1103
                $classTmp->{$key} = $value;
1104
            } else {
1105
                $propertyAccessor->setValue($classTmp, $key, $value);
1106
            }
1107
        }
1108
1109
        yield $classTmp;
1110
    }
1111
1112
    /**
1113
     * @return mixed|null