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