我有一个用于处理SQL的通用函数。我收到这个错误(一天只有几次,不经常)。
PHP Catchable fatal error: Object of class PDO could not be converted to string in...
基本上,为我正在使用的函数传递了一个值数组,我必须在我的代码中滑落并在该数组中放置一个PDO对象。
我需要创建一个array_filter函数来检查变量是否是PDO对象。我如何为此做一个简单的if语句?
if($var == PDO)
编辑:谢谢你的答案!如果有人有兴趣,这就是我解决问题的方法。我能够找到无效输入的来源。
$before=$original_array;
$after = array_filter($before, "find_error");
if(count($before)!=count($after)){
$error=print_r(debug_backtrace(false),true);
$arr=print_r($before,true);
send_message("admin@email.com","Error Report",$arr.$error);
//send_message is a simple function for sending emails. You could also write information to a txt file, etc.
}
function find_error($var){
return !($var instanceof PDO);
}
答案 0 :(得分:11)
instanceof用于确定PHP变量是否是某个类的实例化对象:
if($var instanceof PDO) {
// your code
}
答案 1 :(得分:2)
您可以使用instanceof。
if($var instanceof PDO){
//code here
}
但是你说
我必须在我的代码中滑落并在该数组中放置一个PDO对象
我建议您找到并更正该问题,否则您可能会在继续开发时为自己存储其他问题,并可能将该数组传递给应用程序的其他部分。
始终解决问题,而不是专注于治疗症状。
答案 2 :(得分:2)
您要做的是被称为“错误消息抑制”。通过良好的撒玛利亚人已经为你带来了期望的if
陈述,你只是假装在程序流程中没有错误。虽然它仍然存在。
一个优秀的程序员必须问“如何追踪错误以及如何修复错误”,而不是“如何堵塞错误”。
因此,您必须使用debug_backtrace()
来跟踪添加错误数据的位置。此功能必须放在您所拥有的错误消息标记的行中
然后,您需要调试代码以确保您添加PDO结果的假设是正确的
最后修复错误。
在我写这个答案时,你似乎设法以正确的方式解决问题。但我得把它放在这里为未来的读者。