有没有办法只指定一些可选的函数args?

时间:2016-12-22 06:54:57

标签: php

我有一个功能

public function test($arg1, $arg2 = "a", $arg3 = "b")

有没有办法调用它只指定$arg1$arg3保留$arg2默认值?

3 个答案:

答案 0 :(得分:2)

function test($arg1, $arg2 = "a", $arg3 = "b") {
    if (is_null($arg2)) $arg2 = "a";
    return $arg1.' '.$arg2.' '.$arg3;
}

echo test(1, null, 3);

输出:

1 a 3

在JavaScript中也会指出这很常见:

function test (input, callback) {
  $.post( "example.com/endpoint", input, function(err, data) {
    if (error || response.statusCode !== 200) {
      callback(true, response)
    }
    callback(null, data)
  })
}

test({
  'id': 1,
  'name': 'Mary'
}, function (err, data) {
  if (err) {
    console.log.error('Error!!')
    console.log(data)
  }
  console.log.info(data)
})

答案 1 :(得分:0)

答案 2 :(得分:0)

你可以使用这样的currying函数:参考这个post

function foo($x, $y, $z) {
  echo "$x - $y - $z";
}

$bar = function($z) {
  foo('A', 'B', $z);
};

$bar('C');

也:

function foo($x, $y, $z) {
  echo "$x - $y - $z";
}

function fnFoo($x, $y) {
  return function($z) use($x,$y) {
    foo($x, $y, $z);
  };
}

$bar = fnFoo('A', 'B');
$bar('C');