【问题标题】:Restrict parameter count for optional parameters in php限制php中可选参数的参数计数
【发布时间】:2013-05-07 04:07:51
【问题描述】:

从 php 文档中我发现了以下函数:

string number_format ( float $number , int $decimals = 0 , 
                       string $dec_point = '.' , string $thousands_sep = ',' )

此函数接受一个、两个或四个参数(不是三个)。当传递三个参数时,函数会在函数调用行生成警告Warning: Wrong parameter count for number_format()

据我了解,任何可选参数都应该是完全可选的。此外,php 不支持函数重载,因此我们可以创建两个不同的函数来实现这一点。

我的问题是:

  1. 是否可以在函数声明本身(不在函数代码中)以某种方式限制上述参数的数量

  2. 如果不是,并且上述函数使用trigger_error() 生成警告,生成的警告如何引用调用此函数的文件和行。 trigger_error() 函数似乎在它被调用的那一行产生了一个警告/错误。

【问题讨论】:

标签: php optional-parameters


【解决方案1】:

这个函数只是增加了一个额外的检查你是否有 3 个参数。

如果发送了 3 个参数,则会生成警告。

类似于:

if(func_num_args() == 3) {
  trigger_error('Wrong parameter count for number_format()', E_USER_WARNING);
}

参考:func_num_args()trigger_error()

【讨论】:

  • 但它不会在定义此函数的库中的行上生成警告。在这种情况下,警告显示在调用函数的行。
  • 类似的逻辑在PHP解析器中定义。这就是为什么 PHP 解析器会在函数定义级别引发警告。
  • 我已经更新了这个问题。我想了解这个逻辑以及是否可以在我们自己的一些函数中实现它。 trigger_error 在它使用的文件/行上引发警告。
  • 您可以控制输出缓冲区并仅显示页面上的错误,即使用ob_*()函数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-06
  • 2017-02-01
  • 1970-01-01
  • 2013-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多