关于call_user_func_array 和 引用 的一段代码 不懂求解释

WBOY
Freigeben: 2016-06-23 14:02:48
Original
940 Leute haben es durchsucht

class PbObject{		var $params;	var $fontFace = 'incite.ttf';	function Object() {		$args = func_get_args();		if (method_exists($this, '__destruct')) {			register_shutdown_function (array(&$this, '__destruct'));		}		call_user_func_array(array(&$this, '__construct'), $args);	}		function __construct(){}			function toString() {		$class = get_class($this);		return $class;	}}
Nach dem Login kopieren



请问这段代码中的  call_user_func_array(array(&$this, '__construct'), $args);  为什么$this前面加引用符&?  这样的代码我一直没有搞懂过。  不加&不也是一样能调用本身的 __construct 方法?  加了有什么作用? 


回复讨论(解决方案)

当 call_user_func_array 调用的函数是类的方法时,需要用数组同时传递 类(对象)和 方法名
你的 $this 就是对象了
在 php4 中,对象默认以值传递,如果没有引用声明(&),那么实际上是在另一个对象上执行的,如果方法中修改了类属性,那么这一修改将不能作用到调用者本身
在 php5 中,对象都是以引用传递,所以就没有必要冠以 & 了

你的代码中用 var 声明类属性,这显然是 php4 风格的
php4 的类没有析构函数,所以代码用 register_shutdown_function 注册了一个



原来跟版本有关  学习了  

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage