PHP声明函数时的参数顺序

时间:2018-08-16 03:49:44

标签: php

这是一个好奇心问题。创建函数时,是否有推荐的方法来订购参数?我的意思是,如果我要创建一个接收3个参数的函数,可以说int $a$str b$mixed $c,是否有理由选择一个订单而不是另一个订单?喜欢基于什么而不喜欢function f($a, $b, $c)而不是function f($c, $b, $c)?像参数类型还是其他类型?

我知道可选参数必须始终放在最后,但是除此之外,是否有任何标准或实用建议会影响性能或其他方面?

简而言之,我只想知道函数参数的顺序是否总是任意的。

注意::我的问题是关于何时仅声明函数。

3 个答案:

答案 0 :(得分:1)

它们是相对任意的,但是我看到了两种主要方法。最不常见的是“使用顺序”,这仅在顺序功能中才有意义,其中$this$that之前。

但是,典型的方式是遵循“最重要”或必需参数的方式。您不需要important, optional, optional, optional, optional, optional, important-因为您需要 设置为''nullfalse的可选项,以便进行定义最后一个重要的。

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)

在实际使用中,您会看到它调用了具有相似名称的变量,以使代码读起来更好。

该顺序对性能没有特定影响。只有可读性和理解力。