PHP可选参数

时间:2014-04-03 07:51:59

标签: php performance oop

我有以下PHP函数:

public function foo($a, $b, $c){

    q = xyz($a,$b,$c);
    return q;
}


public function foo($a, $b ){

    q = xyz($a,$b);
    return q;


}

我想创建一个私有函数来评估param $c是否在那里使用它,如果不是的话;它没有。

因此,我最终将要做的是调用私有函数来评估params,然后运行查询。

3 个答案:

答案 0 :(得分:1)

您可以在函数定义中定义默认值。 这样,可以使用或不使用该参数调用该函数,您可以要求默认区分这些情况。 选择最不可能实际选择作为参数值的默认值。

<?php
    public function foo($a, $b, $c = null){

      if(is_null($c) {
        $q = doThis($a,$b);
      }
      else {
        $q = doThat($a,$b,$c);
      }
      return $q;
    }

答案 1 :(得分:1)

很难确切地知道你想要什么,因为你的问题中没有很多上下文,但这对我来说似乎很简单 - 公共方法foo()接受2或3个值,然后调用私有方法xyz(),也接受2或3个值。

在这种情况下,您可以通过在下面的示例中指定默认值($c)使每个方法中的第三个参数null成为可选项,但您可以定义string,{{ 1}},int等。无论你的情况如何)。

假设您在调用array之前将一些功能应用于传递到foo()的值,否则我看不出有任何理由来实现该方法。

最后,您可以在xyz()中实施代码检查并使用$c的值。

以下名为xyz()的类的上下文中的示例:

Bar

希望这会有所帮助:)

编辑我在问题评论中看到Alma Do建议相同。

编辑实际上,在这种情况下,值得指出class Bar { public function foo($a, $b, $c = null) { // do something here, e.g: input validation // before calling private method Foo::xyz() return $this->xyz($a, $b, $c); } private function xyz($a, $b, $c = null) { // handle variables... isset($c) etc. // implement functionality return ''; } } 方法签名中$c的默认值是多余的,因为它在调用时总会有一些值通过xyz($a, $b, $c = null)(显式值或foo())。但是,如果您在方法的其他部分内部调用null,在不同情况下明确显示2或3个值...您可能非常希望这样做,因此值得保持默认值以获得灵活性。 / p>

最终目标是,让xyz()自己决定是否要使用xyz()的值。

答案 2 :(得分:-1)

看看这个,可能对你有帮助!

public function foo(){
    return call_user_func_array("xyz",func_get_args());
}