首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >传递用于设置变量的数组

传递用于设置变量的数组
EN

Stack Overflow用户
提问于 2010-06-07 23:13:07
回答 3查看 268关注 0票数 1

在阅读php代码时,我经常看到这个成语:

代码语言:javascript
运行
复制
public function __construct($config)
{
    if (array_key_exists('options', $config)) {
       ...
    }
    if (array_key_exists('driver_options', $config)) {
        ...
    }
}

这里我关注的是参数的使用方式。如果我在lisp中,我会这样做:

代码语言:javascript
运行
复制
(defun ct (&key options driver_options) 
       (do-something-with-option-and-driver_option))

但是因为我是在PHP中,所以我宁愿有一个构造函数,它接受一个参数列表,如果不需要,就让它们为null。

那么你们觉得在other中使用一个数组作为参数来做一些初始化之类的事情怎么样?

在其他回答中,你必须考虑到函数用户和API设计者的观点。

EN

Stack Overflow用户

回答已采纳

发布于 2010-06-07 23:21:48

就我个人而言,我不喜欢这个成语。如果需要的话,我更喜欢有一个很长的参数列表。

问题是,我不能通过查看函数签名来知道数组不能接受的元素。最重要的是,实现几乎不会检查是否有任何键无法识别,所以如果我错误地拼写了数组键,我就不会收到任何警告。

更好的替代方法是传递一个配置对象。至少,IDE可以提供有关可用配置对象的提示,并且可以将计算出的缺少选项的默认值从您向配置对象中的getter显示的构造函数中移出。一种显而易见的替代方法是为几个配置选项提供setter;尽管这对每个选项所需的setter没有帮助,但不能提供默认值。

票数 1
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2990674

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档