【问题标题】:PHP Default Parameters Overwriting Passed ValuesPHP 默认参数覆盖传递的值
【发布时间】:2015-12-20 00:54:53
【问题描述】:

我有这样的功能:

protected function example($param = null)
{
}

当我这样称呼它时:

$this->example("string");

或者像这样: $string = "字符串"; $this->example("string");

参数值仍然为空。我做错了什么?

【问题讨论】:

  • 我建议放入一个 var_dump 并跟踪您的代码,以确保它正在执行您期望的操作,并且出于理智的原因。确保您也调用了正确的文件。
  • 您能否展示一个显示此问题的完整示例?您确定要调用 that 函数吗?这看起来在一个类中(因为protected 关键字),所以你需要$this->example("string");
  • example() 与 OOP 中的 $this->example()$class->example() 不同
  • 您如何确定$param 为空?
  • Newbi3,我实际上是从同一个类中调用该函数。我已经让它将 $param 值写入文件,并且该值始终是我设置的默认值,而不是我传入的值。

标签: php parameters parameter-passing param


【解决方案1】:

尝试返回变量。

protected function example($param = null)
{
    return $param;
}

【讨论】:

    【解决方案2】:

    将参数设置为 NULL 仅在未传递参数时将变量 $param 分配为 NULL。

    就像你这样称呼它 $this->example();

    否则 $param 将设置为您传递的任何内容。

    【讨论】:

      猜你喜欢
      • 2013-09-07
      • 1970-01-01
      • 1970-01-01
      • 2013-02-03
      • 1970-01-01
      • 1970-01-01
      • 2011-12-20
      • 2020-07-29
      相关资源
      最近更新 更多