【问题标题】:PHP set a third optional parameter in the function arguments without setting the second optional parameter?PHP在函数参数中设置第三个可选参数而不设置第二个可选参数?
【发布时间】:2012-06-28 09:27:32
【问题描述】:

有点棘手的问题,但是如果您稍后必须修改脚本以添加第三个可选参数,这可以节省大量时间,而第二个也是可选的,并且大多数情况下它被用作未设置的第二个参数,现在当您添加第三个参数,您必须到处扫描以找到代码 sn-p 并添加/设置第二个,然后添加第三个 ..

有没有简单的方法来做到这一点?

例子:

  public static function result($sql, $i = 0, $r = 0) {
  //code
  } 

如果我们需要添加第三个 $r,稍后和大多数时候如果代码被用作

 result($sql);

现在我必须扫描和做的所有地方

 result($sql,0,10);

有没有一种简单的方法来设置第三个参数而不设置第二个参数?

【问题讨论】:

标签: php


【解决方案1】:

不,这是不可能的,但是您可能需要考虑将可选参数设置为 null,然后在函数中设置默认值。

例如:

public static function result($sql, $i = null, $r = null) {
   if(is_null($i)){
       $i="default";
   }
   ... etc
} 

这样,您可以在函数中保持默认值,而不必在整个代码库中复制它。

【讨论】:

    【解决方案2】:

    添加一个可能的参数数组

    public static function result($sql, $settings=null) {
      if(is_array($settings) {
        if(isset($settings['i']) {
           // condition code
        }
        if(isset($settings['r']) {
          // condition code
        }
      }
      // normal code
    } 
    

    【讨论】:

    • 我认为使用这样的“设置”数组的问题在于函数签名不再描述它的功能,您必须阅读整个代码才能找出所有有效的论点等跨度>
    猜你喜欢
    • 2010-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-05
    • 2016-11-19
    • 1970-01-01
    相关资源
    最近更新 更多