【问题标题】:PHP5 order of function parameters [duplicate]PHP5函数参数顺序[重复]
【发布时间】:2012-07-15 02:34:41
【问题描述】:

可能重复:
PHP Optional Parameters - specify parameter value by name?

我可以在 PHP5 中只调用第一个和第三个参数的函数吗?
还有另一种方法来指定参数顺序吗?

function foo($param1=null, $param2=null, $param3=null) {}

foo($param1, $param3); 

代替:

foo($param1, null, $param3); 

【问题讨论】:

  • “正常”的 PHP 方法是用 NULL 覆盖未使用的参数,就像您所做的那样。
  • 您可能想使用 func_get_args?

标签: php function parameters


【解决方案1】:

不是直接的,但你可以写如下:

function foo($args)
{
    print "param1 : " . $args["param1"] . "\n";
    print "param2 : " . $args["param2"] . "\n";
    print "param3 : " . $args["param3"] . "\n";
}

foo(array("param1" => $param1, "param3" => $param3)); 

如果您想允许这样的可选用法。

【讨论】:

  • 它有几个缺点,使用数组而不是单个参数。更难记录;另一个开发人员在他们的 IDE 中没有有用的自动完成功能;您需要更多条件表达式 (if/else) 来检查是否设置了参数;你不能使用 PHP 的类型提示功能……简而言之:将多个单独的参数作为单个数组传递是一个非常糟糕的主意。
  • @feeela - stackoverflow.com/questions/680368/… 似乎不是这么说的。
  • @Flexo 好吧,如果那里的答案,您似乎只读过一个。从长远来看,缺点比优点更重要——尤其是在构建一个需要多年维护的大型应用程序时。接受的答案甚至没有回答“在 PHP 中模拟命名函数参数,好主意还是坏主意?”这个问题。当对所有参数使用数组时,它会声明是使用提取的数组变量还是数组本身。
  • 这确实是一个非常糟糕的主意,除非你真的需要它,否则应该避免它。如果您的函数有太多参数需要开始命名它们,那么您做错了。没关系,语法很糟糕,它是命名参数的一个非常糟糕的近似值,这是一些语言支持的真实特性。
【解决方案2】:

不,param3 将被视为 param2。

你可以像这样传递一个哈希:

$myhash = array('param1'=>'someval','param3'=>'someval');
foo($myhash);

【讨论】:

  • 使用名称而不是索引
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多