2011-10-05 235 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(); 
相關問題