以下代码解释了我遇到的问题,我正在尝试按值将$this
分配给变量但是它最终通过引用分配,为什么?我该怎么办?
以下脚本是两个类Test
和TestQuery
的集合。 Test
假定$num
属性中的值,然后脚本调用Test->exist()
,创建两个变量:$original
“按值”和$obj
按引用,在这一点都是一样的。最后脚本调用TestQuery->doit( $obj )
;如果TestQuery
的值为2,则$code
会修改$obj
的{{1}},但结果无效,因为$num
的值是$original
$obj
方法中的exist()
与新方法相同。
<?php
class TestQuery{
public function doit( &$obj )
{
if ($obj->getNum() == 2)
$obj->setCode( 55 );
}
}
class Test {
public $code;
public $num;
public function setCode( $code ) { $this->code= $code; }
public function getCode( $code ) { return $this->code; }
public function getNum()
{
return $this->num;
}
public function exist()
{
$original = $this;
$obj =& $this;
// The same objects ...(valid)
echo "<xmp>";
print_r( $original );
echo " VS ";
print_r( $obj );
echo "</xmp>";
$tc = new TestQuery();
$tc->doit( $obj );
// The same objects newly... (invalid, hoping different)
echo "<xmp>";
print_r( $original );
echo " VS ";
print_r( $obj );
echo "</xmp>";
}
}
$t = new Test();
$t->num = 2;
$t->exist();
exit;
?>
答案 0 :(得分:0)
我找到的解决方案是使用 git checkout -b temp public/master
git merge --squash dev
# since merge --squash does not produce a commit:
git commit -m "squash dev"
git push public temp:master
git checkout dev
git branch -d temp
关键字。
clone