如果只是 PDO::ATTR_$attr 会被认为是组合字符串,所以解析会失败,可能你会对以下问题产生错误
getAttribute(constant("PDO::ATTR_$attr")); //正确读出常量 getAttribute(PDO::ATTR_$attr); //产生错误提示,被认为是字符串 getAttribute(PDO::ATTR_AUTOCOMMIT); //正确读出来
因为在PDO::ATTR_$attr 中$attr是字符串,而前面完全是一段字符而已,所以自然就成了字符串,必须使用constant读出字符串所对应的常量。
而 PDO::ATTR_AUTOCOMMIT 早就是常量了,所以他自身可以直接地被读出来
mixed PDO::getAttribute ( int $attribute )
关键还是要看好函数的语法···
$pdo->getAttribute(constant("PDO::ATTR_AUTOCOMMIT"))不久相当于$pdo->getAttribute(0)
的确是这样,但是这里的0与得到结果自动提交的值 0 不是同一个意思。
你可以这样测试下,这里应该是调用这个方法传入常量的值而得到该常量的状态,我觉得常量的值和常量的状态号是两个不同的概念。
$pdo->getAttribute($a = constant("PDO::ATTR_AUTOCOMMIT")) . <br />;
echo $a .<br />;