我刚刚发现我的打印处理程序确实改变了对象的光标。 (这意味着查看对象确实会改变它,我宁愿不这样做。)
例如,如果我打印mysqli_query的结果,我需要添加类似$ result-> data_seek(0)的内容;在我开始之前。
我尝试使用克隆而不是对象,但显然无法克隆mysqli_queries。
有没有办法在不改变它的情况下处理一个abitrary对象?
我简化了我的方法,专注于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;
}