【发布时间】:2021-01-30 20:20:57
【问题描述】:
我正在尝试创建一个扩展 DateTime 的类,实现调用父级的构造函数。 这总是返回 NULL 而不是对象的实例。这种行为的原因是什么?
class TimeHandler extends DateTime{
public function __construct(){
$somevar = parent::__construct();
echo gettype($somevar); //This always outputs NULL instead of object
}
}
$instanTH = new TimeHandler();
【问题讨论】:
-
构造函数通常不返回值,它适用于当前对象。
-
这能回答你的问题吗? Purpose of PHP constructors
-
我想我对术语 NigelRen 有点困惑。我在 PHP.net 中读到 PDO::__construct 在成功时返回一个 PDO 对象(这使得类似于上面代码的内容适用于 PDO),同时它为 DateTime::__construct 声明以下内容:返回一个新的 DateTime 实例。我想当然地认为 DateTime 实例与对象相同。
-
您可以认为
new关键字返回的是实例,而不是构造函数本身,它只是初始化状态。你可以调用new parent获取实例,但是TimeHandler不会被初始化。