class Person{ public $name; public function money(){ echo '20000'; }}$p1 = new Person;$p2 = new Person;var_dump($p1, $p2);?>

输出结果:object(Person)#1 (1) { ["name"]=> NULL } object(Person)#2 (1) { ["name"]=> NULL }

天生了两个不同的工具

2、把工具赋值给其余一个变量, 采取的是"引用传值"办法, 是同一个工具(间接)

<?phpclass Person{public $name;public function money(){echo '20000';}}$p1 = new Person;$p2 = $p1;var_dump($p1, $p2);?>

object(Person)#1 (1) { ["name"]=> NULL } object(Person)#1 (1) { ["name"]=> NULL }

两个工具的编号相同

php接收对象PHP 对象获取方法 PHP

3、克隆工具

把一个工具进行复制, 形成一个新的工具

关键字 clone

语法: clone 工具变量

<?phpclass Person{ public $name; public function money(){ echo '20000'; }}$p1 = new Person;$p2 = clone $p1;var_dump($p1, $p2);?>

object(Person)#1 (1) { ["name"]=> NULL } object(Person)#2 (1) { ["name"]=> NULL }

两个工具的编号不同

4、工具的比较

要判断是否是同一个工具, 必须类成员同等, 而且编号必须相同

<?phpclass Person{ public $name; public function money(){ echo '20000'; }}$p1 = new Person;$p2 = clone $p1;var_dump($p1 == $p2); //true 成员属性是一样的var_dump($p1 === $p2); //false 编号不一致?>

5 工具的传值办法细节磋商

<?phpheader("Content-type: text/html; charset=utf-8");class Person{ var $age = 18;}$p1 = new Person();$p2 = $p1; //复制工具的标识符$p2->age++;var_dump($p1); echo "<br>"; //object(Person)#1 (1) { ["age"]=> int(19) }var_dump($p2); echo "<br>"; //object(Person)#1 (1) { ["age"]=> int(19) }echo "<br/>\$p1->age: ".$p1->age; //$p1->age: 19echo "<br/>\$p2->age: ".$p2->age; //$p2->age: 19$p3 = new Person();$p4 = &$p3; //引用传址$p4->age++;echo "<br>\$p3->age: ".$p3->age; //$p3->age: 19echo "<br>\$p4->age: ".$p4->age; //$p4->age: 19echo "<br>";$p2 = 10;$p4 = 10;var_dump($p1); echo "<br>"; //object(Person)#1 (1) { ["age"]=> int(19) }var_dump($p2); echo "<br>"; //int(10)var_dump($p3); echo "<br>"; //int(10)var_dump($p4); echo "<br>"; //int(10)?>

工具变量直接指向(操作)的是工具的编号(标示符)。
利用工具变量, 实在是在利用工具的标示符(但并不能显示出来),

该标示符是内置指向工具数据本身的。
则作为变量的默认传值办法, 工具变量之间的传值默认也是"值通报";

对付按值通报:$p2 = $p1;

其结果是:复制了$p1直接指向的工具编号数据, 并赋值给了$p2

$p1 object(Person)#1 (1) { ["age"]=> int(19) }

$p2 object(Person)#1 (1) { ["age"]=> int(19) }

对付引用传址:$p4 = &$p3;

变量$p4直接复制变量$p3, 也一样有着共同的工具编号数据;

$p3 object(Person)#1 (1) { ["age"]=> int(19) }

$p4 object(Person)#1 (1) { ["age"]=> int(19) }

对付赋值操作:$p2 = 10; $p4 = 10;

此时的数据10只是一个普通数据, 不是标识符就不能指向工具了;