函数参数之前的PHP类型,好还是坏?

时间:2011-07-19 22:06:26

标签: php types

为参数提供类型是否有任何好处:

public static function DoStuff( string $str ) {
    echo $str;
}

与不使用它们相比?

public static function DoStuff( $str ) {
    echo $str;
}

如果我声明我的类型,它可能会运行得更快吗?

4 个答案:

答案 0 :(得分:23)

您不能(使用当前版本的PHP)指定标量类型,例如string或int。您只能指定类/接口或数组。

手册的相关页面:Type Hinting


我看到使用类型提示至少有一个很大的优势:可读性。更容易看出函数/方法所期望的参数类型。

有些人会认为这是一个缺点,如果你不尊重类型提示并传递一些非类型有效的参数,你将得到一个可捕获的致命错误。然而,

  • 我个人认为这会迫使开发人员更多地尊重您的界面
  • 它允许您的代码只使用收到的参数。
  • 生成的错误是可捕获的


如果您的问题与速度有关:

  • 决定使用类型提示或不使用类型提示不应该是性能考虑的结果。您应该使用或不使用该功能。
  • 即使有一些性能影响,它应该是非常小的。我会说在考虑这个问题之前,你应该优化代码的很多部分。


总之,个人观点:我经常使用这些类型的提示,就这样:

  • 使用我的代码的人知道他们希望传递给的内容(他们并不总是阅读文档......)
  • 如果他们不按预期行事,那就失败了;硬;在某种程度上,他们立即注意到
  • 我的代码不必检查收到的参数是否属于正确的类型:我知道它是,因为PHP对我强制执行。

答案 1 :(得分:6)

通常,类型检查/类型提示是一件好事,因为它为编译器/解释器提供了必要的信息,以便更好地进行错误检查。如果不键入提示,程序可能会以静默方式崩溃,而不是生成描述性错误。

答案 2 :(得分:1)

优势在于,如果有人试图错误地使用您的函数,您将立即收到错误(例如使用一个类而不是另一个类,或者在应该使用数组时)。

但是,除了对象或数组之外的任何东西都不能这样做 - 所以带有字符串的示例将不起作用。

随着更多检查的发生,它几乎肯定会运行得更慢。

答案 3 :(得分:1)

我在php上有三个优点:

  1. 代码变得更具自我描述性
  2. 当您需要严格的验证(如数字或非设定值检查)时非常有用。
  3. 通过显示非终端php错误来告知您使用了错误的变量值,从而限制了变量的使用。
  4. 我不确定使用类型是否可以提高性能。