为什么即使类和构造函数的情况不同,我的构造函数仍然被调用?

时间:2011-10-05 10:07:51

标签: php constructor

我很惊讶为什么在我们有不同的类和构造函数名称时调用构造函数。构造函数名称以小“r”开头?

class Registration{

    function registration(){
        echo "Constructor is called.";
    }
}

$obj = new Registration();
//$obj->registration();

输出: 调用构造函数。

修饰: 这种不区分大小写的行为是否依赖于我们正在使用的php版本?

4 个答案:

答案 0 :(得分:7)

在php中,所有函数名称are case-insensitive

顺便说一下,你应该切换到new-style __construct。构造函数作为具有类名称的函数是历史工件。

答案 1 :(得分:7)

php不区分大小写(有时)。以下也适用:

CLASS REGISTRATION {

    FUNCTION reGISTration(){
        ECHO "constructor is called.";
    }
}

$obj = NEW Registration();

答案 2 :(得分:0)

我认为两个名字都是一样的..

因为当您尝试在同一页面中声明名称为“registration”的类时,它会给出一个错误,指出您无法重新声明该类..

在这种情况下,它不区分大小写

答案 3 :(得分:0)

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