| @@ 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 |
|