Code Duplication    Length = 45-45 lines in 2 locations

src/voku/db/Result.php 2 locations

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