Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php DateTime的继承是否会更改任何默认函数行为?_Php_Datetime - Fatal编程技术网

Php DateTime的继承是否会更改任何默认函数行为?

Php DateTime的继承是否会更改任何默认函数行为?,php,datetime,Php,Datetime,我想知道,当我在自己的专用类的两个实例上使用它时,从DateTime继承的类是否仍然有它的超类默认行为函数来比较日期,该类实现了神奇的_toString()方法 我的确切意思更容易用代码解释: class OwnDate extends DateTime { public function __toString() { return $this->format('Y-m-d H:i:s'); } } $date1 = new OwnDate('2013-12-31'); $date2 =

我想知道,当我在自己的专用类的两个实例上使用它时,从DateTime继承的类是否仍然有它的超类默认行为函数来比较日期,该类实现了神奇的_toString()方法

我的确切意思更容易用代码解释:

class OwnDate extends DateTime
{
public function __toString()
{
return $this->format('Y-m-d H:i:s');
}
}
$date1 = new OwnDate('2013-12-31');
$date2 = new OwnDate('2014-01-01');

if ($date1 < $date2)
{
// does this comparsion above work?
}
C#将其解析为以下代码:

int i = 10;
Console.WriteLine("i is " + i.ToString());

如果PHP也是这样做的,我上面的比较应该不会起作用,对吧?我试图从PHP类DateTime中找到源代码,但找不到。在这个特殊问题上的任何帮助都是有帮助的。谢谢

实现/扩展类时,父类(在本例中为
DateTime
)将其方法传递给子类(
OwnDate
),除非重写它们。因此,如果您直接使用
DateTime
类,则
DateTime
中的方法仍应以相同的方式运行。我猜会抛出一个奇怪的异常。你是对的。我鼓起勇气在phpfiddle上测试它:是的,它按预期工作。日期比较仍然有效。@alpham8你不会因为自己的实验和尝试而破坏任何东西。阅读手册并亲自尝试是学习的方法。我知道面向对象编程和所有四个基本原则。但这是PHP的一种特殊行为,它以另一种方式处理每种oo编程语言。例如。在C#中,DateTime只是一个结构,因此它是一个自己定义的数据类型,您可以轻松地进行比较。但是结构在PHP中是未知的,所以它必须是一个完整的类。我以前也不确定PHP内部如何处理对象上的比较(返回什么值?引用还是任何数据?)。因此,感谢大家的技术支持。
int i = 10;
Console.WriteLine("i is " + i.ToString());