检查变量是否是PDO对象?

时间:2013-03-24 07:50:28

标签: php mysql pdo

我有一个用于处理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);
}

3 个答案:

答案 0 :(得分:11)

instanceof用于确定PHP变量是否是某个类的实例化对象:

if($var instanceof PDO) {
   // your code
}

答案 1 :(得分:2)

您可以使用instanceof

if($var instanceof PDO){
    //code here
}

但是你说

  

我必须在我的代码中滑落并在该数组中放置一个PDO对象

我建议您找到并更正该问题,否则您可能会在继续开发时为自己存储其他问题,并可能将该数组传递给应用程序的其他部分。

始终解决问题,而不是专注于治疗症状。

答案 2 :(得分:2)

  1. 你正试图治愈症状而不是疾病。
  2. 你只是出于猜测而尝试它。
  3. 您要做的是被称为“错误消息抑制”。通过良好的撒玛利亚人已经为你带来了期望的if陈述,你只是假装在程序流程中没有错误。虽然它仍然存在。

    一个优秀的程序员必须问“如何追踪错误以及如何修复错误”,而不是“如何堵塞错误”。

    因此,您必须使用debug_backtrace()来跟踪添加错误数据的位置。此功能必须放在您所拥有的错误消息标记的行中 然后,您需要调试代码以确保您添加PDO结果的假设是正确的 最后修复错误。

    在我写这个答案时,你似乎设法以正确的方式解决问题。但我得把它放在这里为未来的读者。