你的同事很疯狂。传递数组作为函数参数是完全可以接受的。它在包括Symfony和Doctrine在内的许多开源应用程序中很流行。我总是遵循2参数规则,如果函数需要两个以上的参数,或者你认为将来会使用两个以上的参数,请使用数组。 IMO允许最大的灵活性并减少在参数传递不正确时可能出现的任何调用代码缺陷。
当然,从数组中推断出值需要更多的工作,你必须考虑所需的元素,但它确实使添加功能更容易,并且比每次需要时将13个参数传递给函数要好得多被称为。
这是一段显示所需和可选参数的代码,只是为了给你一个想法:
// Class will tokenize a string based on params
public static function tokenize(array $params)
{
// Validate required elements
if (!array_key_exists('value', $params)) {
throw new Exception(sprintf('Invalid $value: %s', serialize($params)));
}
// Localize optional elements
$value = $params['value'];
$separator = (array_key_exists('separator', $params)) ? $params['separator'] : '-';
$urlEncode = (array_key_exists('urlEncode', $params)) ? $params['urlEncode'] : false;
$allowedChars = (array_key_exists('allowedChars', $params)) ? $params['allowedChars'] : array();
$charsToRemove = (array_key_exists('charsToRemove', $params)) ? $params['charsToRemove'] : array();
....