Carbon:创建日期错误,更改日期影响所有变量
Carbon: error to create date , change date affect all variables
为什么要更改所有变量。
如何避免我的变量不改变它的值
在我的控制器中
public function show()
{
$inicio = Carbon::createFromFormat('Y-m-d H:i:s',"2016-02-04 11:00:00");
$fin = $inicio;
$otro = $fin->addHours(1);
return view('horas',array('inicio'=>$inicio,'otro'=>$otro,'fin'=>$fin));
}
我的看法:
<p><b>Inicio: </b> {{$inicio}}</p>
<p><b>Fin: </b> {{$fin}}</p>
<p><b>Otro: </b> {{$otro}}</p>
结果
问题出在哪里?
这是因为 Carbon 对象是可变的。
尝试克隆它们。
public function show()
{
$inicio = Carbon::createFromFormat('Y-m-d H:i:s',"2016-02-04 11:00:00");
$fin = clone $inicio;
$otro = clone $inicio; // not sure why you need this
$fin->addHours(1);
return view('horas',array('inicio'=>$inicio,'otro'=>$otro,'fin'=>$fin));
}
当你制作$fin=$inicio;
时,$fin
将始终引用$inicio
,这意味着如果$inicio
发生变化,$fin
将同时发生变化,这对象是如何工作的 这是面向对象的世界。
试试这个:
public function show()
{
$inicio = Carbon::createFromFormat('Y-m-d H:i:s',"2016-02-04 11:00:00");
$fin = clone $inicio;
$otro = clone $fin->addHours(1);
return view('horas',array('inicio'=>$inicio,'otro'=>$otro,'fin'=>$fin));
}
您应该更改为以下内容:
$fin = $inicio->copy();
$otro = $fin->copy()->addHours(1);
为什么要更改所有变量。
如何避免我的变量不改变它的值
在我的控制器中
public function show()
{
$inicio = Carbon::createFromFormat('Y-m-d H:i:s',"2016-02-04 11:00:00");
$fin = $inicio;
$otro = $fin->addHours(1);
return view('horas',array('inicio'=>$inicio,'otro'=>$otro,'fin'=>$fin));
}
我的看法:
<p><b>Inicio: </b> {{$inicio}}</p>
<p><b>Fin: </b> {{$fin}}</p>
<p><b>Otro: </b> {{$otro}}</p>
结果
问题出在哪里?
这是因为 Carbon 对象是可变的。
尝试克隆它们。
public function show()
{
$inicio = Carbon::createFromFormat('Y-m-d H:i:s',"2016-02-04 11:00:00");
$fin = clone $inicio;
$otro = clone $inicio; // not sure why you need this
$fin->addHours(1);
return view('horas',array('inicio'=>$inicio,'otro'=>$otro,'fin'=>$fin));
}
当你制作$fin=$inicio;
时,$fin
将始终引用$inicio
,这意味着如果$inicio
发生变化,$fin
将同时发生变化,这对象是如何工作的 这是面向对象的世界。
试试这个:
public function show()
{
$inicio = Carbon::createFromFormat('Y-m-d H:i:s',"2016-02-04 11:00:00");
$fin = clone $inicio;
$otro = clone $fin->addHours(1);
return view('horas',array('inicio'=>$inicio,'otro'=>$otro,'fin'=>$fin));
}
您应该更改为以下内容:
$fin = $inicio->copy();
$otro = $fin->copy()->addHours(1);