1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
<?php
//对象的值传递
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),而不是对整个对象的拷贝
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<?php
//对象的值传递
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;
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
<?php
//引用传递对象
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;
|
本文转自 hgditren 51CTO博客,原文链接:http://blog.51cto.com/phpme/2051503,如需转载请自行联系原作者