PHP对象传递

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;
posted @ 2018-06-18 11:08  天涯海角路  阅读(804)  评论(0)    收藏  举报