在PHP中,参数签名是什么?

8

PHP官方文档在讲解关于类和对象部分的extends时,指出:

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

官方在线链接

1个回答

9

参数签名就是方法定义中参数的定义(签名)。引文所说的意思是,在覆盖父类方法时使用相同数量(和类型,在PHP中不适用)的参数。
函数/方法的签名也称为“头部”。它包含名称和参数。函数的实际代码称为“主体”。

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

例如,如果您在父类中有一个方法foo($arg1,$arg2),则无法通过定义一个方法foo($arg)来覆盖扩展类中的该方法。


1
不管文档怎么说,它可以像那样被覆盖,兄弟。试一下吧。 - raidenace
@Raidenace,那将是一种不同的方法,而不是父类中的扩展。 - Havelock
1
@Raidenace,不,它会触发一个错误:“ChildClass::displayVar()的声明应该与SimpleClass :: displayVar()的兼容”。 - Havelock
1
你试过了吗?而且它不应该触发那个错误,因为它们是两个签名,因此是两个不同的函数,对吧? - raidenace
我做了。这里的问题是,你做了吗? - Havelock
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接