我以前写过很强类型的语言,比如java。我需要告诉编译器我将放入什么类型的变量...例如...
public static void sayHello(String aName)
我可以确保用户将字符串传递给我... 但是如果我使用 php,我可以做到...
function sayHello($aName)
我仍然可以调用 sayHello,但我不知道参数类型是什么......我可以让名称更具信息性,如下所示:
function sayHelloWithString($aName)
但我无法阻止用户将 int 传递给我......用户仍然可以将 int 传递给我......这可能会导致很多错误......我怎么能停下来?任何想法或经验分享?谢谢。
最佳答案
不阻止用户传入 int 怎么样?
在 php 中,您可以检查 is_string
,但是当然,您会错过设置了 __toString
的对象,或者数字到字符串的隐式转换。
如果您必须在开发人员尝试不同的东西时让您的程序痛苦地哭泣,您可以在更高版本的 PHP 中指定一个类型(即 function foo(ObjectType $bar)。 ..
)*
在大多数松散类型的语言中,您希望为主要类型设置回退:
- 人数
- 数组
- 字符串
- 通用对象
接受的东西要自由,发送的东西要严格。
* 类型提示不支持原始类型
关于java - 使用脚本语言时如何避免混淆?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6442843/