即使类和构造函数的情况不同,为什么我的构造函数仍然被调用?
我很惊讶为什么当我们有不同的类和构造函数名称时调用构造函数。构造函数名称以小“r”开头?即使类和构造函数的情况不同,为什么我的构造函数仍然被调用?
class Registration{
function registration(){
echo "Constructor is called.";
}
}
$obj = new Registration();
//$obj->registration();
输出: 构造函数被调用。
修改: 这种不区分大小写的行为取决于我们使用的PHP版本吗?
php不区分大小写(有时)。下面将工作以及:
CLASS REGISTRATION {
FUNCTION reGISTration(){
ECHO "constructor is called.";
}
}
$obj = NEW Registration();
在php中,所有函数名称为are case-insensitive。
顺便说一下,您应该切换到new-style __construct
。作为函数的构造函数与类的名称是历史文物。
而对于兼容性的原因名为像类中的方法被认为是构造函数。 – ThiefMaster
@ThiefMaster更新了。 – phihag
我认为这两个名称相同..
,因为当你试图声明在同一页面名称“登记”类,它会给你一个错误,指出您不能重新声明类..
在这种情况下,它不区分大小写
PHP是不区分大小写,但是这并不能说明行为。
此行为是因为具有相同名称的函数被视为构造函数。
见http://php.net/manual/en/language.oop5.decon.php - 例2
因此,这对于任何给定的名字的真正功能,EG:
class Dog{
function dog(){
echo "Constructor is called.";
}
}
$obj = new Dog();
$obj->dog();
即使其他答案也是正确的,但是,这改善了我对不仅对功能级别不敏感的知识,而且还对其他保留字,类名也进行了区分。 –