Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.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示例用法_Php_Oop_Clone - Fatal编程技术网

克隆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');