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

本文探讨了PHP4到PHP5中构造函数的变化,特别是在类中同时定义了__construct()和类同名构造函数的情况。通过实验验证了__construct()的优先级高于同名构造函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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,
这说明魔法函数优先级要大于同名函数,两者同时存在时只调用魔法构造函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值