我一直在玩弄 PDO 来尝试为结果创建一个默认返回类,并使其成为一般的默认行为。
这使我发现我需要扩展PDOStatement
以便它在实例化时设置我的默认类。
代码中没有明显的错误。
当我在 DB 包装器中创建 PDO 实例时,我将 DB 句柄设置为使用我的扩展语句类,并将类名作为结果类的参数传递。我通常会使用 stdClass 但相反,我创建了一个简单的类扩展ArrayObject
.
$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_CLASS);
$pdo->setAttribute(
PDO::ATTR_STATEMENT_CLASS,
array(
'DatabaseStatement',
array('DatabaseRow')
)
);
这一切看起来都很好,但我收到以下错误:
SQLSTATE[HY000]: General error: Invalid class name (should be a string)
这不是最好的错误消息,也没有真正提供有关错误发生的原因或位置的任何信息,但我相信这是由于上面的部分,因为一旦我删除了该部分,它就不会发出错误了。
希望有人能给我一个前进的方向,因为我已经在 Google/SO-ing 一段时间了,但是,唉,无济于事。
提前感谢您,如果我提供的内容不够,请随时询问更多信息:]