我有以下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,然后运行查询。
答案 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());
}