类型提示和默认参数值也是方法签名吗?

Are type hint and default param value also method signature?

示例: 接口是

public function doFoo($bar);

我可以 class 使用方法

实现接口吗
public function doFoo(array $bar = array('test')) { }

PHP中的方法签名是什么意思?

只是方法名和参数名吗? 或者,类型提示和参数的默认值也包括在内?

接口的参数默认值不固定(说明:值不固定,但如果接口有默认值,则实现接口的 class 也需要默认值,但该值不是由接口固定的)。

然而,当接口定义带有类型提示的方法时,class 必须使用相同的类型提示!您还可以在 manual.

中看到这一点

引自那里:

An interface, together with type-hinting, provides a good way to make sure that a particular object contains particular methods. See instanceof operator and type hinting.

您可以通过多种方式type-hint。 PHP 中方法签名的格式为:

class -> type -> variable -> default value

因此,您可以暗示参数必须是 class 的实例,例如:

function foo(someClass $bar)

或者您可以仅指定该参数必须是 callable,例如:

function foo(callable $bar)

类似地,您可以像上面那样输入数组提示。

参数不是您指定的 class 的实例会引发致命错误。