在函数中调用特定参数

时间:2017-02-27 00:27:12

标签: php

虽然我已经自学了很多,但今天我一直在努力解决在函数中调用参数的意外行为。

这是一个示例函数:

public function example($foo = null, $bar = null) {
    if ($foo) {
        // Do something
    }

    if ($bar) {
        // Do Something
    }
}

现在,如果我写一个看起来如下的调用,我希望立即调用$ bar(第二个参数),事实并非如此 - 这对我来说是有意义的。

$this->example($bar);

有没有办法只调用第二个参数而不使用以下内容?

$this->example(null, $bar);

1 个答案:

答案 0 :(得分:1)

嗯,就像Darren和他的例子所建议的那样,你可以使用函数func_get_args,但没有太大区别,所以你应该使用哪一个适合你。 使用func_get_args虽然看起来不太舒服,但是不使用直接参数的原因是什么?选择您想要用作指标的任何值(null,false,'barambam')并执行以下操作:

const ARGFALSE = 29292929299;
function foobar($f, $o, $o, $b, $a, $r){
if (!$f)// equivalent to $f != false
echo 'First arg should not be used.';
If (!$o == ARGFALSE)echo 'Second is taging along with the first';
foobar(false, ARGFALSE);

但是,在某些(或大多数)情况下,你可以向后做(另一个例子):

function getUsers($type, $limit = false) { // or your default value. It can be almost anything.
$query = 'Select from users where type = ?';
If($limit){
$query .= ' limit ?';
return $result = Db::run($query, [$type, $limit]);
}else{
return $result = Db::run($query, [$type]);
}
}