2013-04-25 111 views
4

在解釋PHP官方文檔大約延伸下類和對象部分,它說:什麼是PHP中的參數簽名?

"When overriding methods, the parameter signature should remain the same or PHP 
will generate an E_STRICT level error. This does not apply to the constructor 
which allows overriding with different parameters." 

所以我想知道,有什麼參數簽名是什麼?

的文檔內的示例如下:

<?php 
class ExtendClass extends SimpleClass 
{ 
    // Redefine the parent method 
    function displayVar() 
    { 
     echo "Extending class\n"; 
     parent::displayVar(); 
    } 
} 

$extended = new ExtendClass(); 
$extended->displayVar(); 
?> 

官方在線link

回答

4

參數簽名是簡單地在一個方法的定義(簽名)參數的定義。引用文本的含義是,在重寫父類的方法時使用相同的參數(以及不適用於PHP的類型)。
函數/方法的簽名也被稱爲。它包含名稱和參數。該函數的實際代碼被稱爲主體

function foo($arg1, $arg2) // signature 
{ 
    // body 
} 

因此,舉例來說,如果你有一個父類的方法foo($arg1, $arg2),你不能定義一個方法foo($arg)覆蓋它的擴展類。

+1

無所謂文檔說什麼,它可以完全覆蓋像那個兄弟。試試看。 – raidenace 2013-04-25 16:32:29

+0

@Raidenace然後taht將是一個不同的方法,而不是在父類中的擴展。 – Havelock 2013-04-25 16:39:43

+0

號如果你有'功能displayVar()',和子類具有'函數displayVar($ X)'然後調用'childObj-> displayVar()父類'應該叫家長'displayVar()'用沒有參數,因爲根據你的說法是不同的。但這不是PHP的行爲。 – raidenace 2013-04-25 16:44:20