一尘不染

有没有办法在PHP中指定可选参数值?

php

假设我有一个PHP函数foo:

function foo($firstName = 'john', $lastName = 'doe') {
    echo $firstName . " " . $lastName;
}
// foo(); --> john doe

有什么办法只能指定第二个可选参数?

例:

foo($lastName='smith'); // output: john smith

阅读 423

收藏
2020-05-29

共1个答案

一尘不染

PHP本身不支持命名参数作为函数。但是,有一些方法可以解决此问题:

  1. 使用数组作为该函数的唯一参数。然后,您可以从数组中提取值。这允许在数组中使用命名参数。
  2. 如果要根据上下文允许可选数量的参数,则可以使用func_num_args和func_get_args而不是在函数定义中指定有效参数。然后,根据参数数量,字符串长度等,您可以确定要执行的操作。
  3. 将空值传递给您不想指定的任何参数。并不是真的可以绕开它,但是它可以工作。
  4. 如果在对象上下文中工作,则可以使用魔术方法__call()处理这些类型的请求,以便可以根据传递的参数将其路由到私有方法。
2020-05-29