在函数中使用args的更有效方法

时间:2013-12-26 23:49:15

标签: php function arguments

我需要在PHP中定义一个包含多个参数的函数(如下所示):

function the_function($arg1, $arg2, $arg3, $arg4, $arg5, $arg6, $arg7, ...) 

但我相信有一种更有效,更干净的方法。谁能帮我?我想过使用一个类似的数组。 obs:对不起noob问题!是b

编辑:我会使用类似

的内容
function foo(
    'number of topics', 'topics per page', 'topics per line'
     , 'type of topic', 'number of excerpt words'
);

3 个答案:

答案 0 :(得分:2)

我认为你可以用三种方式:

  1. 如果所有参数在语义上相同,请在函数中使用func_get_args()来迭代给定的参数。单个数组参数是一种受人尊敬的选择。

  2. 如果大多数参数在语义上相同,请将它们组合在一起作为单个数组参数。分别处理其他论点。

  3. 在所有其他情况下,将相关参数组合成一个单独的对象。

  4. 他们并非完全相互排斥。

答案 1 :(得分:1)

数组是避免大量参数的标准方法(如果函数确实需要那么多)。只要考虑数组中的事物类型是否具有数字性质,或者命名它们是否有意义。您可能希望传入关联数组而不是数字。当然,绝对确定该函数确实需要这些参数,并且不能进一步细分。

这里只是一个随机的例子,其中关联数组可能有意义。

$phone = [
  'home' => '555-5551',
  'cell' => '555-5552',
  'work' => '555-5553'
];
function updateUserInfo($userId, $age, array $phone) {

}

而不是:

function updateUserInfo($userId, $age, $homePhone, $cellPhone, $workPhone) {

}

答案 2 :(得分:0)

我建议坚持明确声明你的论点。它使测试更容易,模糊性更低。此外,您可以对对象和数组强制执行某些类型检查。

 function foo( User $user, array $user_friend_ids);