php引用传递对象参数的写法

按下面的写法就是引用传递

function func(&$obj) {

}
class A
{
    public $v = 1;
}

function change($obj)
{
    $obj->v = 2;
}

function makezero($obj)
{
    $obj = 0;
}

$a = new A();
change($a);

var_dump($a);
/* 
output:

object(A)#1 (1) {
  ["v"]=>
  int(2) // 由于是引用传递,所以值已经被修改
}

*/

makezero($a);

var_dump($a);

/* 
output (same as before):

object(A)#1 (1) {
  ["v"]=>
  int(2) // 由于是值传递,所以值没有改变
}

*/

学废了吗?

发表评论