2011-10-05 130 views
4

我很惊讶为什么当我们有不同的类和构造函数名称时调用构造函数。构造函数名称以小“r”开头?即使类和构造函数的情况不同,为什么我的构造函数仍然被调用?

class Registration{ 

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

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

输出: 构造函数被调用。

修改: 这种不区分大小写的行为取决于我们使用的PHP版本吗?

回答

7

php不区分大小写(有时)。下面将工作以及:

CLASS REGISTRATION { 

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

$obj = NEW Registration(); 
+0

即使其他答案也是正确的,但是,这改善了我对不仅对功能级别不敏感的知识,而且还对其他保留字,类名也进行了区分。 –

7

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

顺便说一下,您应该切换到new-style __construct。作为函数的构造函数与类的名称是历史文物。

+2

而对于兼容性的原因名为像类中的方法被认为是构造函数。 – ThiefMaster

+0

@ThiefMaster更新了。 – phihag

0

我认为这两个名称相同..

,因为当你试图声明在同一页面名称“登记”类,它会给你一个错误,指出您不能重新声明类..

在这种情况下

,它不区分大小写

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(); 
相关问题