我需要在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'
);
答案 0 :(得分:2)
我认为你可以用三种方式:
如果所有参数在语义上相同,请在函数中使用func_get_args()
来迭代给定的参数。单个数组参数是一种受人尊敬的选择。
如果大多数参数在语义上相同,请将它们组合在一起作为单个数组参数。分别处理其他论点。
在所有其他情况下,将相关参数组合成一个单独的对象。
他们并非完全相互排斥。
答案 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);