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
答案 0 :(得分:4)
参数签名只是方法定义(签名)中参数的定义。引用文本的含义是,在覆盖父类的方法时,使用与参数相同的数字(和不适用于PHP的类型)。
函数/方法的签名也称为 head 。它包含名称和参数。该函数的实际代码称为 body 。
function foo($arg1, $arg2) // signature
{
// body
}
因此,例如,如果父类中有方法foo($arg1, $arg2)
,则无法通过定义方法foo($arg)
在扩展类中覆盖它。