Code Duplication    Length = 45-45 lines in 2 locations

src/voku/db/Result.php 2 locations

@@ 898-942 (lines=45) @@
895
     *
896
     * @return false|object <p><strong>false</strong> on error</p>
897
     */
898
    public function fetchObject($class = '', array $params = null, bool $reset = false)
899
    {
900
        if ($reset === true) {
901
            $this->reset();
902
        }
903
904
        // fallback
905
        if (!$class || $class === 'stdClass') {
906
            /** @noinspection ClassConstantCanBeUsedInspection */
907
            $class = '\stdClass';
908
        }
909
910
        $row = $this->fetch_assoc();
911
        $row = $row ? $this->cast($row) : false;
912
913
        if (!$row) {
914
            return false;
915
        }
916
917
        if (\is_object($class)) {
918
            $classTmp = $class;
919
        } elseif ($class && $params) {
920
            $reflectorTmp = new \ReflectionClass($class);
921
            $classTmp = $reflectorTmp->newInstanceArgs($params);
922
        } else {
923
            $classTmp = new $class();
924
        }
925
926
        $propertyAccessor = PropertyAccess::createPropertyAccessor();
927
        foreach ($row as $key => $value) {
928
            if ($class === '\stdClass') {
929
                $classTmp->{$key} = $value;
930
            } else {
931
                $propertyAccessor->setValue($classTmp, $key, $value);
932
            }
933
        }
934
935
        return $classTmp;
936
    }
937
938
    /**
939
     * Returns all rows at once as key-value pairs.
940
     *
941
     * @param string $key    The column name to use as keys
942
     * @param string $column The column name to use as values (optional)
943
     *
944
     * @return array An array of key-value pairs
945
     */
@@ 1025-1069 (lines=45) @@
1022
     *
1023
     * @return \Generator
1024
     */
1025
    public function fetchYield($class = '', array $params = null, bool $reset = false): \Generator
1026
    {
1027
        if ($reset === true) {
1028
            $this->reset();
1029
        }
1030
1031
        // fallback
1032
        if (!$class || $class === 'stdClass') {
1033
            /** @noinspection ClassConstantCanBeUsedInspection */
1034
            $class = '\stdClass';
1035
        }
1036
1037
        if (\is_object($class)) {
1038
            $classTmp = $class;
1039
        } elseif ($class && $params) {
1040
            $reflectorTmp = new \ReflectionClass($class);
1041
            $classTmp = $reflectorTmp->newInstanceArgs($params);
1042
        } else {
1043
            $classTmp = new $class();
1044
        }
1045
1046
        $row = $this->fetch_assoc();
1047
        $row = $row ? $this->cast($row) : false;
1048
1049
        if (!$row) {
1050
            return;
1051
        }
1052
1053
        $propertyAccessor = PropertyAccess::createPropertyAccessor();
1054
        foreach ($row as $key => $value) {
1055
            if ($class === '\stdClass') {
1056
                $classTmp->{$key} = $value;
1057
            } else {
1058
                $propertyAccessor->setValue($classTmp, $key, $value);
1059
            }
1060
        }
1061
1062
        yield $classTmp;
1063
    }
1064
1065
    /**
1066
     * @return mixed
1067
     */
1068
    private function fetch_assoc()
1069
    {
1070
        if ($this->_result instanceof \Doctrine\DBAL\Statement) {
1071
            if (
1072
                $this->doctrinePdoStmt