Я только что понял, что мой обработчик печати меняет курсор объектов. (Это означает, что просмотр объекта действительно меняет его, и я бы предпочел этого не делать.)
Например, если я печатаю результат mysqli_query, мне нужно добавить что-то вроде $ result-> data_seek (0); прежде чем я смогу идти вперед.
Я пытался использовать клон вместо объекта, но, видимо, нельзя клонировать mysqli_queries.
Есть ли способ, как я могу обработать абиторный объект, не меняя его?
Я упростил свой метод, чтобы сосредоточиться на цикле foreach.
Заранее спасибо за помощь!
Питер
private static function _recursivePrintHandler($input, string $tab)
{
if(is_array($input))
{
$echoStr = 'array'. PHP_EOL;
}
elseif(is_object($input))
{
$echoStr = 'object'. PHP_EOL;
//$input = clone $input; // does not work, i.e. one cannot clone mysqli objects :-(
}
else
{
return 'UNKNOWN TYPE';
}
$echoStr .= $tab. '('. PHP_EOL;
$tabAdditional = ' ';
foreach ($input as $key => $value)
{
$echoStr .= $tab. '['. $key. '] => '. CallSomeThing(). PHP_EOL;
}
$echoStr .= $tab. ')';
return $echoStr;
}
Задача ещё не решена.
Других решений пока нет …