gpt4 book ai didi

php - 有很多参数的函数是不是不好的形式?还有什么选择?

转载 作者:可可西里 更新时间:2023-10-31 22:07:16 27 4
gpt4 key购买 nike

我有一个查询数据库的搜索功能,有大约 15 个可选参数。显然这并不漂亮,调用它有点乱。 PHP 不允许重载方法,所以我一直在创建巨大的函数签名。

我在其他地方看到了诸如创建参数类之类的建议:Disadvantages of using a lot of parameters

但这似乎太沉重了。我可以传入一个关联数组,但是虽然这减少了参数的数量,但我认为它不太容易遵循,因为没有内置文档说明数组中应该存在哪些键。

有没有其他方法可以优雅地处理这个问题?通常在其他语言中,我会有一个非常丑陋的 private 方法,它最多接受十几个参数,然后创建同名的 public 方法,它接受这些参数的一个子集,并且内部调用私有(private)方法。

最佳答案

在 PHP 中,您可以使用关联数组:

someFunction(array(
"a" => 3243,
"b" => 2354,
"c" => 33453,
"d" => 324353,
"e" => 321243,
"f" => 321243,
"g" => 312243,
"h" => 321243,
))

或者调用该函数的对象的属性(如果有意义的话)。 PHPMailer 发送这样的邮件:

// instantiate the class
$mailer = new PHPMailer();

// Set the subject
$mailer->Subject = 'This is a test';

// Body
$mailer->Body = 'This is a test of my mail system!';

// Add an address to send to.
$mailer->AddAddress('foo@host.com', 'Eric Rosebrock');

if(!$mailer->Send())
{
echo 'There was a problem sending this mail!';
}

而且它有更多的可选参数。它也可以使用具有一百个参数的方法,但这更具可读性。

编辑:这些解决方案还更好地支持可选参数。对于属性,它很简单,对于关联数组,您可以将数组与默认值数组合并。

关于php - 有很多参数的函数是不是不好的形式?还有什么选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4933496/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com