您有个知识币

【退出】

php __construct函数和构造函数分析

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();

?>

 

 

 

本文固定链接: http://www.webzhishi.com/php-construct/ | web知识网

【上一篇】
【下一篇】

php __construct函数和构造函数分析:等您坐沙发呢!

发表评论