这是一个好奇心问题。创建函数时,是否有推荐的方法来订购参数?我的意思是,如果我要创建一个接收3个参数的函数,可以说int $a
,$str b
和$mixed $c
,是否有理由选择一个订单而不是另一个订单?喜欢基于什么而不喜欢function f($a, $b, $c)
而不是function f($c, $b, $c)
?像参数类型还是其他类型?
我知道可选参数必须始终放在最后,但是除此之外,是否有任何标准或实用建议会影响性能或其他方面?
简而言之,我只想知道函数参数的顺序是否总是任意的。
注意::我的问题是关于何时仅声明函数。
答案 0 :(得分:1)
它们是相对任意的,但是我看到了两种主要方法。最不常见的是“使用顺序”,这仅在顺序功能中才有意义,其中$this
在$that
之前。
但是,典型的方式是遵循“最重要”或必需参数的方式。您不需要important, optional, optional, optional, optional, optional, important
-因为您需要 设置为''
或null
或false
的可选项,以便进行定义最后一个重要的。
像function test( $data_key, $number_of_results = 5, $classes = '' ){}
之类的东西很有意义,因为您可以调用test( 'my_key' );
并获得可用的结果。
如果它是function test( $number_of_results = 5, $classes = '', $data_key ){}
,则应在data_key
required 之前输入半可选参数,因为必须先将它们传递给函数:{ {1}}
答案 1 :(得分:1)
除了必须在最后的可选参数之外,参数的顺序并不重要。
以这个例子为例。
function f($a, $b) { return $a - $b; }
这是具有不同顺序参数的相同函数。
function f($b, $a) { return $a - $b; }
你知道。即使顺序参数不同,这两个函数也会返回相同的值。
简而言之,您只需要注意必填和可选参数。强制参数始终在可选参数之前声明。强制参数之间的顺序根本没有关系。相同的可选参数。
答案 2 :(得分:1)
最重要的是一致性和满足合理的期望。您真的希望人们避免猜测哪个参数是哪个。
例如,不良设计:
function add($list, $item)
function delete($item, $limit, $list)
function insert($count, $item, $list)
function push($item, $list)
请尝试保持一致:
function add($list, $item)
function delete($list, $item, $limit)
function insert($list, $item, $count)
function push($list, $item)
您还可以根据获得的详细程度在函数名称中传达期望:
function deleteFrom($list, $item)
或者,如果您希望使用其他订单:
function insertItemInto($item, $list)
在实际使用中,您会看到它调用了具有相似名称的变量,以使代码读起来更好。
该顺序对性能没有特定影响。只有可读性和理解力。