克隆PHP示例用法
可能重复:克隆PHP示例用法,php,oop,clone,Php,Oop,Clone,可能重复: 我是面向对象开发的新手,我正在创建一个应用程序作为面向对象的程序,你能给我提供一些关于如何使用PHP的克隆方法的例子吗,现实生活中的例子是首选 我想更全面地理解相关概念 谢谢,这是一个前几天我需要克隆一个对象的例子。我需要有两个DateTime对象,一个是from date和一个to date。可以在URL参数中指定它们,但是可以忽略其中任何一个,我需要将它们设置为默认值 下面的示例经过了一定程度的简化,因此下面介绍的实现中存在一些缺陷,但是它应该会给您一个不错的想法 问题在于Da
我是面向对象开发的新手,我正在创建一个应用程序作为面向对象的程序,你能给我提供一些关于如何使用PHP的克隆方法的例子吗,现实生活中的例子是首选 我想更全面地理解相关概念
谢谢,这是一个前几天我需要克隆一个对象的例子。我需要有两个DateTime对象,一个是
from date
和一个to date
。可以在URL参数中指定它们,但是可以忽略其中任何一个,我需要将它们设置为默认值
下面的示例经过了一定程度的简化,因此下面介绍的实现中存在一些缺陷,但是它应该会给您一个不错的想法
问题在于DateTime::modify方法。假设用户提供了起始日期,但未提供截止日期。因此,我们将截止日期设置为从给定的起始日期起12个月
DateTime类提供了一个方法,可以通过某些偏移量来修改自身。因此,我们可以假设以下方法是可行的
$date_to = $date_from;
$date_to->modify('+12 months');
然而,这将导致$date\u from
和$date\u to
都是相同的日期,即使示例似乎将变量$date\u从复制到$date\u to
,它实际上创建了对它的引用,而不是副本。这意味着,当我们调用$date\u to->modify(“+12个月”)
时,实际上是在修改这两个变量,因为它们都指向DateTime对象的同一个实例
正确的方法是
$date_to = clone $date_from; // $date_to now contains a clone (copy) of the DateTime instance $date_from
$date_to->modify('+12 months');
clone语句告诉PHP创建DateTime对象的新实例,并将其存储在$date\u to
中。从这里开始,调用modify只会将$date\u更改为,而$date\u From
将保持不变。文档从几个示例开始:是否有您不完全理解的内容?不是我不理解手册中的内容,但我认为我的实际水平没有任何问题,我想知道一些在以后的实现中使用的示例。
$date_to = clone $date_from; // $date_to now contains a clone (copy) of the DateTime instance $date_from
$date_to->modify('+12 months');