类型提示和默认参数值也是方法签名吗?
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 的实例会引发致命错误。
示例: 接口是
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 的实例会引发致命错误。