【发布时间】:2012-12-24 07:47:26
【问题描述】:
假设我有一个具有以下签名的方法/函数:
foo($bar = 0)
在 foo 内部,我如何判断 $bar 是否已设置? isset 将始终返回 TRUE,因为 $bar如果没有任何内容传递给 foo,则 > 分配为 0。
检查 0 不是一个选项。我需要知道参数显式设置为 0 或默认设置为 0 之间的区别。
【问题讨论】:
-
对于函数的行为来说,这是一种非常笨拙的方式。
f(0)应该产生相同的结果,而不管参数0的“来源”。 -
如果您正在创建一个多态方法,如果设置了参数则执行一件事,如果未设置参数则执行另一件事。
-
弗兰克,一些内置函数可以做到这一点,在我的情况下,我需要包装 substr,当我将 null 的包装器 $length 默认参数传递给 substr 时,我什么也没得到,因为 substr 解释说长度为 0。是的,它非常笨拙,我已经开始期待 PHP 没有比这更好的了。
标签: php