2013-04-25 115 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