我一直在用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)
这不是最好的错误消息,并没有真正提供有关错误发生的位置或位置的任何信息,但我认为这是由于上面的段,因为一旦删除该部分,它就不会不再发出错误。
希望有人可以给我一个方向,因为我已经谷歌/ SO-ing一段时间了,但是唉,无济于事。
提前感谢您,如果我提供的内容不够,请随时询问更多信息:]
答案 0 :(得分:0)
叹息
好吧,我已经解决了这个问题。我的一个功能是将扩展PDOStatement类中的一个方法中的参数覆盖到null
,从而导致我的自定义行类被替换。 Oooops。
这是一件很容易错过的事情。令人惊讶的是,当你离开一个项目一小段时间然后再回到它时你注意到了!哈哈哈......唉,尴尬。