PHP碳-相互绑定的变量

PHP碳-相互绑定的变量,php,laravel,laravel-5.2,php-carbon,Php,Laravel,Laravel 5.2,Php Carbon,在Laravel5.2控制器中使用PHP Carbon时,变量似乎相互绑定。因此,对其中一个的改变会影响其他人 PHP函数: $now = Carbon::now(); var_dump($now); $from = $now; $from->startOfYear(); var_dump('-----------------------------------'); var_dump($now, $from); 结果: object(Carbon\Carbon)[225] p

在Laravel5.2控制器中使用PHP Carbon时,变量似乎相互绑定。因此,对其中一个的改变会影响其他人

PHP函数:

$now = Carbon::now();

var_dump($now);

$from = $now;
$from->startOfYear();

var_dump('-----------------------------------');
var_dump($now, $from);
结果:

object(Carbon\Carbon)[225]
  public 'date' => string '2016-02-13 21:55:36.000000' (length=26)
  public 'timezone_type' => int 3
  public 'timezone' => string 'UTC' (length=3)

string '-----------------------------------' (length=35)

object(Carbon\Carbon)[225]
  public 'date' => string '2016-01-01 00:00:00.000000' (length=26)
  public 'timezone_type' => int 3
  public 'timezone' => string 'UTC' (length=3)

object(Carbon\Carbon)[225]
  public 'date' => string '2016-01-01 00:00:00.000000' (length=26)
  public 'timezone_type' => int 3
  public 'timezone' => string 'UTC' (length=3)
$from
设置为年初也影响了
$now
,我看不出原因,搜索互联网对我没有任何帮助。在函数中,我需要根据其他碳日期访问和操作碳日期,因此我不能对碳日期的每个单独实例使用
Carbon::now()

我如何解决这个问题?是什么原因造成的

更新 我无法回答为什么会发生这种情况,但我已经找到了一个暂时的解决办法,直到我能找到它的底部。从原始碳日期创建一个新的碳日期,转换为字符串。例如,
$from=$new变成
$from=new Carbon($now->toDateTimeString())。您也可以像往常一样访问方法


$from=(新碳($now->toDateTimeString())->startOfYear()

当您分配一个对象时,您分配了它的内存地址,因此基本上没有创建两个不同的碳对象,而是对同一对象进行了两次引用

而不是这个-

$from=$now

使用-

$from=clone$now

您还可以使用carbon
copy()
方法,该方法基本上与您在“hack”中所做的相同-

$from=$now->copy()