php同名构造函数和__construct构造函数的共存问题

    php4以前的版本中,类的构造函数即是类的同名函数,而到了php5类的构造函数多了一个__construct魔法函数,那当这两个同时存在时,构造实例时调用的到底是哪个函数呢?
    有疑问就直接敲代码来验证答案:
    1、两个函数都存在的情况下
<?php
class A{
		var $str = "construct";
	        function __construct(){
			$this->str = "construct";
		}	
		function A(){
			$this->str = "A";	
		}
}
$a = new A();
echo $a->str;
?>

运行结果输出是construct
这里如果__construct(){}不设置值时,其输出结果也为空,并不会是A。
2、如果魔法函数不存在时
<?php
class A{
		var $str = "construct";
	        	
		function A(){
			$this->str = "A";	
		}
}
$a = new A();
echo $a->str;
?>

输出结果为A,
这说明魔法函数优先级要大于同名函数,两者同时存在时只调用魔法构造函数。

你可能感兴趣的:(PHP)