Mar092012
php __construct函数和构造函数分析
作者:黑♂白 发布:2012-03-09 21:26:53 分类: web后端
php4以前的版本中,类的构造函数即是类的同名函数,而到了php5类的构造函数多了一个__construct魔法函数,那当这两个同时存在时,构造实例时调用的到底是哪个函数呢?
1、两个函数都存在的情况下
Php代码
<?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代码
<?php
class A{
var $str = "construct";function A(){
$this->str = "A";
}
}
$a = new A();
echo $a->str;
?>
输出结果为A,
这说明魔法函数优先级要大于同名函数,两者同时存在时只调用魔法构造函数。
请判断下面一段函数的返回结果:
<?php
class A{
var $str = "cc";
function __construct(){
$this->str = "construct";
}
function A(){
$this->str = "A";
}
}
class B extends A{
function B(){
$this->str = "construct123";
}
function b_fn(){
echo $this->str;
}
}
$b = new B();
$b->b_fn();
?>
您还未登录,需要登录后才能发言