//对象的值传递
class Person
{
//对象属性 成员变量
public $name;
protected $age;
private $work;
//对象行为 成员方法
}
//程序允许在内存的栈区
$zhangsan = new Person();
var_dump($zhangsan); //object(Person) #1对象标识符
$lisi = $zhangsan; //传递的是对象标识符
var_dump($lisi); //$object(Person) #1 对象标识符
//每个包含对象的变量,都持有对象的引用(reference),而不是对整个对象的拷贝
//对象的值传递
class Person
{
public $name;
}
$zhangsan = new Person();
$zhangsan->name = 'Zhang San';
$lisi = $zhangsan;//将zhangsan的对象标识符传递给lisi,即lisi对zhangsan对象的引用。
$lisi = 'abc'; // 'abc'没有对象标识符,因此lisi与zhangsan断开联系
echo $zhangsan->name . PHP_EOL;
//引用传递对象
class Person
{
public $name;
}
$zhangsan = new Person();
$zhangsan->name = 'Zhang San';
$lisi = &$zhangsan;//直接指向zhangsan的内存。
$lisi = 'abc'; // 'abc'没有对象标识符,因此lisi与zhangsan断开联系
echo $zhangsan->name . PHP_EOL;//PHP Notice: Trying to get property of non-object
echo $zhangsan . PHP_EOL;