Heim >Backend-Entwicklung >PHP-Tutorial >基础题:对象引用问题?

基础题:对象引用问题?

WBOY
WBOYOriginal
2016-06-23 14:38:25832Durchsuche

<?php$global_obj=null;class Demo{	var $my_val;	public function __construct(){		global $global_obj;		$global_obj=&$this;	}}$p=new Demo();$p->my_val=5;global $global_obj;$global_obj->my_val=10;echo $p->my_val;  //输出5var_dump($p===$global_obj);  //返回false?>


请问为什么结果是5 而不是10;
我的理解是:PHP5中,除非你用clone关键字明确要克隆一个对象,否则将永远不会无意识地复制对象。
这样理解对吗?


回复讨论(解决方案)

第 8 行 $global_obj=&$this; 时,
第 18 行会有
Creating default object from empty value (从空值创建默认对象)
的警告,你把错误信息屏蔽了,所以搞不清为什么了

当第 8 行纠正为 $global_obj = $this; 时
就能输出 10 了

推荐看下 http://php.net/manual/zh/language.oop5.references.php

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn