【问题标题】:Why is type checking in PHP called "hinting" instead of "checking"?为什么 PHP 中的类型检查称为“提示”而不是“检查”?
【发布时间】:2017-01-06 13:48:25
【问题描述】:

如果我正确理解 php 中的类型提示实际上是做什么的,它会检查类型并在未声明时抛出错误。

在我看来,这不仅仅是一个“提示”——更像是一个(完整的)“检查”(比如 java——我的主要编程背景)。

所以,我想知道我是否遗漏了什么,或者这样命名的意图是什么。

【问题讨论】:

  • 也许它类似于 @NotNull 之类的注释,它允许静态分析以帮助解决可能分配 null 的编码错误,但不会阻止在运行时分配 null 值通过内省。

标签: php language-lawyer type-hinting


【解决方案1】:

PHP 不检查变量类型,并且类型未在变量声明中声明。 PHP 总是在需要时尝试将变量转换为正确的类型。如果你对数字进行str_replace,数字将暂时转换为字符串。

如你所见http://php.net/manual/en/language.types.type-juggling.php

所以它与java完全相反。

【讨论】:

  • 谢谢,但我不确定说它与java“完全相反”是否有多大帮助:差异比精确更微妙。我发现我需要的概念是强制。由于 java 倾向于需要显式强制转换,而强制转换(在 php 中)意味着强制转换是根据需要完成的,无需程序员干预,因此强制转换允许短语“类型提示”作为命名选择对我来说更有意义。
  • 当我说它完全相反时,它是对更像是(完整的)“检查”(如 java - 我的主要编程背景)的反应
猜你喜欢
  • 2018-12-29
  • 2019-03-10
  • 2015-04-14
  • 2019-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多