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

标签 php types

为参数提供类型有什么好处吗:

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

与不使用它们相比?

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

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

最佳答案

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

手册相关页码:Type Hinting .


我至少看到了使用类型提示的一大优势:可读性。更容易看出函数/方法需要什么样的参数。

有些人会认为这是一个缺点,如果您不遵守类型提示并传递一些类型无效的参数,您将得到一个可捕获的 fatal error 。然而,

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


如果您的问题是关于速度:

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


总之,个人意见:我经常使用那些类型提示,就是这样:

  • 使用我的代码的人知道他们应该传递什么(他们并不总是阅读文档...)
  • 如果他们没有做预期的事情,那就失败了;难的;他们会立即注意到
  • 我的代码不必检查接收到的参数的类型是否正确:我知道它是正确的,因为 PHP 会强制执行此操作。

关于函数参数前的 PHP 类型,好还是坏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6754712/

相关文章:

php - 如何在 php 中对左连接查询返回的数组数据进行分组?

python - 当列包含字符串值时 pandas DataFrame.sum 的奇怪行为

haskell - Haskell 的有限域线性代数库

parsing - 静态与动态类型是否与使编写 IDE 变得更加困难有关?

PHP - 函数名称必须是字符串

php - 可以将 composer 与 php71 一起使用来模拟 php70 的环境吗?

PHP - 以秒为单位获取两个日期时间之间的差异

php - Mysql select table 依赖另外两张表

typescript - 在类型中使用元组而不是联合数组

variables - 在 WebGL 中,属性、统一变量和变化变量之间有什么区别?