| @@ 843-886 (lines=44) @@ | ||
| 840 | * |
|
| 841 | * @return object|false <p><strong>false</strong> on error</p> |
|
| 842 | */ |
|
| 843 | public function fetchObject($class = '', array $params = null, bool $reset = false) |
|
| 844 | { |
|
| 845 | if ($reset === true) { |
|
| 846 | $this->reset(); |
|
| 847 | } |
|
| 848 | ||
| 849 | // fallback |
|
| 850 | if (!$class || $class === 'stdClass') { |
|
| 851 | $class = '\stdClass'; |
|
| 852 | } |
|
| 853 | ||
| 854 | $row = $this->fetch_assoc(); |
|
| 855 | $row = $row ? $this->cast($row) : false; |
|
| 856 | ||
| 857 | if (!$row) { |
|
| 858 | return false; |
|
| 859 | } |
|
| 860 | ||
| 861 | $propertyAccessor = PropertyAccess::createPropertyAccessor(); |
|
| 862 | ||
| 863 | if (\is_object($class)) { |
|
| 864 | ||
| 865 | $classTmp = $class; |
|
| 866 | ||
| 867 | } elseif ($class && $params) { |
|
| 868 | ||
| 869 | $reflectorTmp = new \ReflectionClass($class); |
|
| 870 | $classTmp = $reflectorTmp->newInstanceArgs($params); |
|
| 871 | ||
| 872 | } else { |
|
| 873 | ||
| 874 | $classTmp = new $class; |
|
| 875 | ||
| 876 | } |
|
| 877 | ||
| 878 | foreach ($row as $key => $value) { |
|
| 879 | if ($class === '\stdClass') { |
|
| 880 | $classTmp->{$key} = $value; |
|
| 881 | } else { |
|
| 882 | $propertyAccessor->setValue($classTmp, $key, $value); |
|
| 883 | } |
|
| 884 | } |
|
| 885 | ||
| 886 | return $classTmp; |
|
| 887 | } |
|
| 888 | ||
| 889 | /** |
|
| @@ 977-1021 (lines=45) @@ | ||
| 974 | * |
|
| 975 | * @return \Generator |
|
| 976 | */ |
|
| 977 | public function fetchYield($class = '', array $params = null, bool $reset = false): \Generator |
|
| 978 | { |
|
| 979 | if ($reset === true) { |
|
| 980 | $this->reset(); |
|
| 981 | } |
|
| 982 | ||
| 983 | // fallback |
|
| 984 | if (!$class || $class === 'stdClass') { |
|
| 985 | $class = '\stdClass'; |
|
| 986 | } |
|
| 987 | ||
| 988 | $propertyAccessor = PropertyAccess::createPropertyAccessor(); |
|
| 989 | ||
| 990 | if (\is_object($class)) { |
|
| 991 | ||
| 992 | $classTmp = $class; |
|
| 993 | ||
| 994 | } elseif ($class && $params) { |
|
| 995 | ||
| 996 | $reflectorTmp = new \ReflectionClass($class); |
|
| 997 | $classTmp = $reflectorTmp->newInstanceArgs($params); |
|
| 998 | ||
| 999 | } else { |
|
| 1000 | ||
| 1001 | $classTmp = new $class; |
|
| 1002 | ||
| 1003 | } |
|
| 1004 | ||
| 1005 | $row = $this->fetch_assoc(); |
|
| 1006 | $row = $row ? $this->cast($row) : false; |
|
| 1007 | ||
| 1008 | if (!$row) { |
|
| 1009 | return; |
|
| 1010 | } |
|
| 1011 | ||
| 1012 | foreach ($row as $key => $value) { |
|
| 1013 | if ($class === '\stdClass') { |
|
| 1014 | $classTmp->{$key} = $value; |
|
| 1015 | } else { |
|
| 1016 | $propertyAccessor->setValue($classTmp, $key, $value); |
|
| 1017 | } |
|
| 1018 | } |
|
| 1019 | ||
| 1020 | yield $classTmp; |
|
| 1021 | } |
|
| 1022 | ||
| 1023 | /** |
|
| 1024 | * @return mixed |
|