对不起,这个问题太糟糕了,没有正确的答案,所以现在我编辑了:
手册说:
PDO::FETCH_CLASS:返回指定类的实例,将每行的列映射到类中的命名属性。
我的怀疑是,如果类从另一个具有更多属性的类扩展,这个属性会被实例化吗?
对不起,如果我不清楚这个问题,我不会说英语。谢谢大家。
一个好问题。
对于 PDO,类层次结构实际上并不重要。PDO所做的只是从数据库中获取列并将它们分配给类属性,而不管类定义或继承如何。
- 如果属性不存在,PDO 将尝试创建它。
- 如果存在没有要映射的列的属性 - 则 PDO 将保留它。
就这么简单。因此,它应该创建您从数据库中选择的任何内容。
至于您之前问题中的特定代码 - 您必须对其进行调试。看,看看是否有任何内容被获取,你正在使用任何方法printNickName()。但是此方法或任何中间过程都可能存在任何错误。我建议您只创建空类,在其中获取数据,然后直接检查属性。
确保正确设置所有属性后,可以尝试使用自定义类定义。要调试返回的数据,我建议使用
$stmt->execute();
var_dump($stmt->fetchAll(PDO::FETCH_CLASS, 'User'));
您可以从我的文章 PDO 类处理的其他详细信息中了解使用 PDO 获取对象