单数组参数与PHP中的多个参数

时间:2011-07-06 21:44:59

标签: php arrays variables arguments

public function setSomething($what){
  $this->something = $what;
}

...

$obj->setSomething(array('aaa', 'bbb', 'ccc'));

public function setSomething(){
  $this->something = array_values(func_get_args());
}

...

$obj->setSomething('aaa', 'bbb', 'ccc');

您会使用哪种方法?为什么?

ps:如果你给出参数名称,第二个也可以用来模拟我认为的键:

$obj->setSomething($key1 = 'aaa', $key = 'bbb', $key = 'ccc');

1 个答案:

答案 0 :(得分:2)

如果多个参数是可选的,我通常只使用数组。例如,如果我有一个可以获取公司ID,员工ID或两者的报告。我不会function report ($CompanyID = null, $EmployeeID = null),我会function report($array)然后在函数内部执行if (isset($array['company_id']))...等。

如果你认为你需要使用一个数组,因为你有太多的参数,这可能表明这个函数太复杂了,需要拆分。

编辑:请注意,这不是一般答案,因为我不确定它如何适用于您的setter问题,因为逻辑上setter只应该接受一个参数。在你的情况下,如果你的$this->something期望一个数组,给它一个数组,而不是你必须变成一个数组的参数。