我喜欢使用key =>值对(数组)作为参数而不是单个参数来创建我的
PHP函数.
例如,我更喜欢:
function useless_func($params) { if (!isset($params['text'])) { $params['text'] = "default text"; } if (!isset($params['text2'])) { $params['text2'] = "default text2"; } if (!isset($params['text3'])) { $params['text3'] = "default text3"; } echo $params['text'].$params['text2'].$params['text3']; return; }
我不喜欢:
function useless_func($text = "default text",$text2 = "default text2",$text3 = "default text3") { echo $text.$text2.$text3; return; }
我喜欢数组的原因:
>函数参数可以按任何顺序提供
更容易阅读代码/更多的自我记录(在我看来)
>不太容易出错,因为调用函数时,我必须调查正确的数组键
我正在与同事讨论这个问题,他说这是无用的,只是导致额外的代码,更难设置默认值.基本上他完全不同意我的意见.
我正在寻找可能能够提供洞察力的专家的一般建议和指导:做更好或更适当的方法是什么?
嗯,这很有用.但是对于一些传统的论据,总是会使用像函数some($a1,$a2)这样的经典传递.我在代码中这样做:
function getSome(SomeClass $object,array $options = array()) { // $object is required to be an instance of SomeClass,and there's no need to get element by key,then check if it's an object and it's an instance of SomeClass // Set defaults for all passed options $options = array_merge(array( 'property1' => 'default1','property2' => 'default2',... => ... ),$options); }
所以,你可以看到我也喜欢这个代码风格,但是对于核心参数我更喜欢经典风格,因为PHP控制更多的东西,我应该如果我使用你的代码风格.