【问题标题】:Are type hint and default param value also method signature?类型提示和默认参数值也是方法签名吗?
【发布时间】:2015-07-12 04:14:51
【问题描述】:

示例: 界面是

public function doFoo($bar);

我可以有一个类用方法实现接口吗

public function doFoo(array $bar = array('test')) { }

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

仅仅是方法名和参数名吗? 或者,还包括参数的类型提示和默认值?

【问题讨论】:

  • @Rizier123 我刚试过。似乎默认值不是 php >= 5.3.0 的方法签名,并且方法签名中包含类型提示。好的,我认为案子解决了
  • ^ 是的 :) 你明白了!就是这样!

标签: php class oop interface method-signature


【解决方案1】:

参数的默认值不是通过接口固定的(澄清一下:值不是固定的,但是如果接口有默认值,那么实现接口的类也需要默认值,但是值不是由接口固定的)。

但是,当接口定义带有类型提示的方法时,该类必须使用相同的类型提示!您也可以在manual 中看到这一点。

还有一段话:

接口类型提示一起提供了一种确保特定对象包含特定方法的好方法。请参阅 instanceof 运算符和类型提示。

【讨论】:

    【解决方案2】:

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

    class -> type -> variable -> default value

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

    function foo(someClass $bar)

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

    function foo(callable $bar)

    同样,您可以像上面一样键入提示数组。

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

    【讨论】:

      猜你喜欢
      • 2012-01-21
      • 2017-09-11
      • 2022-06-30
      • 2018-12-05
      • 1970-01-01
      • 2021-11-18
      • 2017-12-01
      • 2022-07-24
      • 2022-01-06
      相关资源
      最近更新 更多