Class 将 DateTime 调用扩展到父构造函数并获取 NULL
Class extending DateTime calls to parent constructor and gets NULL
我正在尝试创建一个 class 来扩展 DateTime 以实现调用父对象的构造函数。
这总是 return NULL 而不是对象的实例。这种行为的原因是什么?
class TimeHandler extends DateTime{
public function __construct(){
$somevar = parent::__construct();
echo gettype($somevar); //This always outputs NULL instead of object
}
}
$instanTH = new TimeHandler();
如果您不想在 parent::__construct() 中做任何事情,则在 class 扩展中不需要构造函数。
class TimeHandler extends DateTime{}
$instanceTH = new TimeHandler('today UTC');
var_dump($instanceTH);
//object(TimeHandler)#2 (3) { ["date"]=> string(26) "2020-10-16 00:00:00.000000" ["timezone_type"]=> int(3) ["timezone"]=> string(3) "UTC" }
如果扩展包含构造函数,则还必须在该扩展中执行具有所有必要参数的父 :: __ 构造,以便正确初始化扩展对象。
class TimeHandler extends DateTime{
public function __construct($dt = null, $timeZone = null){
parent::__construct($dt, $timeZone);
}
}
可以找到 DateTime 扩展的示例 here。
我正在尝试创建一个 class 来扩展 DateTime 以实现调用父对象的构造函数。 这总是 return NULL 而不是对象的实例。这种行为的原因是什么?
class TimeHandler extends DateTime{
public function __construct(){
$somevar = parent::__construct();
echo gettype($somevar); //This always outputs NULL instead of object
}
}
$instanTH = new TimeHandler();
如果您不想在 parent::__construct() 中做任何事情,则在 class 扩展中不需要构造函数。
class TimeHandler extends DateTime{}
$instanceTH = new TimeHandler('today UTC');
var_dump($instanceTH);
//object(TimeHandler)#2 (3) { ["date"]=> string(26) "2020-10-16 00:00:00.000000" ["timezone_type"]=> int(3) ["timezone"]=> string(3) "UTC" }
如果扩展包含构造函数,则还必须在该扩展中执行具有所有必要参数的父 :: __ 构造,以便正确初始化扩展对象。
class TimeHandler extends DateTime{
public function __construct($dt = null, $timeZone = null){
parent::__construct($dt, $timeZone);
}
}
可以找到 DateTime 扩展的示例 here。