PHP   发布时间:2022-04-09  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了PHP PDO:将数据作为对象获取 – 分配给BEFORE __construct的属性.它是否正确?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
完整的问题应该是“这是正确的还是一些我不能指望的错误?”

我一直在使用PDO,特别是直接将数据提取到对象中.在这样做的时候我发现了这一点:

如果我直接将数据直接提取到如下对象中:

$STH = $DBH->prepare('SELECT first_name,address from people WHERE 1');
$obj = $STH->fetchAll(PDO::FETCH_CLASS,'person');

并有一个这样的对象:

class person {
  public $first_name;
  public $address;

  function __construct() {
    $this->first_name = $this->first_name . " is the name";
  }
}

它告诉我,在调用__construct之前,这些属性是被赋值的,因为这些名称都附加了“是名称”.

这是一些错误(在这种情况下,我不能/不会指望)或者这是它应该的方式.因为它现在的工作方式真的很好.

更新

显然,according to one of the maintainers这不是一个bug.有人在2008年将其发布为错误,答复是“它不是错误,阅读文档”.

不过,我真的很想知道为什么这是正确的行为.

经过很多阅读,我想我终于遇到了这个答案:这样做有意思,你可以选择使它不起作用.

一个大多数未公开的PDO常数称为PDO :: FETCH_PROPS_LATE,您可以使用它来使属性在构造后被提取到对象中.例如:

$obj = $STH->fetchAll(PDO::FETCH_CLASS | PDO::FETCH_PROPS_LATE,'person');

将导致在创建对象之后分配属性,因此我上面的示例根本不会修改属性.离开PDO :: FETCH_PROPS_LATE当然会导致它像原来的问题的例子中所描述的那样行事.

维护者似乎已经积极地考虑到这两种行为可能是可取的,并给予您选择这样做.文件甚至没有解释 – 我是reading through a list of PDO constants,看到它,并给了它一枪.

大佬总结

以上是大佬教程为你收集整理的PHP PDO:将数据作为对象获取 – 分配给BEFORE __construct的属性.它是否正确?全部内容,希望文章能够帮你解决PHP PDO:将数据作为对象获取 – 分配给BEFORE __construct的属性.它是否正确?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:对象