是吗?1、
<?php
class Obj {
$var = 1;
}
?>Parse error: syntax error, unexpected T_VARIABLE, expecting T_FUNCTION in ... on line 32、
<?php
class Obj {
public $var = 1;
}$a = new Obj;
$b = $a;$a->var = 2;
echo $b->var; //结果为: 2$a = 5;
echo $b; // 结果为: Object id #1
?>3、第二段代码是正确的
因为 $b =& $a;
所以$b跟随$a的变化而变化,反之依然
<?php
class Obj {
$var = 1;
}
?>Parse error: syntax error, unexpected T_VARIABLE, expecting T_FUNCTION in ... on line 32、
<?php
class Obj {
public $var = 1;
}$a = new Obj;
$b = $a;$a->var = 2;
echo $b->var; //结果为: 2$a = 5;
echo $b; // 结果为: Object id #1
?>3、第二段代码是正确的
因为 $b =& $a;
所以$b跟随$a的变化而变化,反之依然
class Obj {
public $var = 1;
}$a = new Obj;
$b = $a;$a->var = 2;
echo $b->var; //结果为: 2 (如果$b=$a是赋值,此处为何是2?)$a = 5;
echo $b->var; //结果为: 2 (如果$b=$a是引用,此处又为何仍为2?)
?>
$b = $a;
$b是$a的拷贝,而不是引用。所以结果也是正确的
在php5中对象总是以引用的方式传递,所以
$b = $a;
和php4中
$b =& $a;
的作用是一样的,当然前提是$a是对象需要注意的是php5中的对象的引用传递是隐式的,他与显式的引用传递(=&)是不同的
自然是引用那么下面又如何解释?<?php
class Obj {
public $var = 1;
}$a = new Obj;
$b = $a;
$a = 5;
echo $b->var; //结果为: 1 (自然是引用为何不是:5呢 ?)
?>
而显式的引用传递则建立了变量间的联系$a = new Obj;
$b = $a;$a = 5;
echo $b->var; //结果为: 1 (自然是引用为何不是:5呢 ?)
因为他们间没有变量级的联系
否则就与&冲突了
--------------显式引用对象 > 隐式引用对象 > 拷贝对象