Php 在函数中调用特定参数
虽然我已经自学了很多,但今天我一直在努力解决在函数中调用参数的意外行为 下面是一个示例函数:Php 在函数中调用特定参数,php,Php,虽然我已经自学了很多,但今天我一直在努力解决在函数中调用参数的意外行为 下面是一个示例函数: public function example($foo = null, $bar = null) { if ($foo) { // Do something } if ($bar) { // Do Something } } 现在,如果我编写一个如下所示的调用,我希望立即调用$bar(第二个参数),但事实并非如此——这对我来说是有道理
public function example($foo = null, $bar = null) {
if ($foo) {
// Do something
}
if ($bar) {
// Do Something
}
}
现在,如果我编写一个如下所示的调用,我希望立即调用$bar(第二个参数),但事实并非如此——这对我来说是有道理的
$this->example($bar);
有没有一种方法可以直接调用第二个参数而不使用以下参数
$this->example(null, $bar);
正如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);
尽管如此,在某些(或大多数)情况下,您可能会逆向操作(另一个示例):
由于您将其定义为一个参数,因此需要按以下顺序填充:
$this->example(null,$bar)代码>。否则,$bar
将被指定为第一个参数。如果出现混淆,名称是独立的,即您可以调用$this->example(null,$b)代码>或$this->示例($a,$b)代码>或$this->示例($blah)谢谢你的回答和纠正我的语法错误,达伦。我的问题是,有时我会在开发后期增强函数,并试图找到一种专门映射函数参数的方法,这样我就不必编辑/检查项目中的所有调用。这是您可以在php中执行的操作吗?基本上不是。您可能需要挂接类似于func\u get\u args()
的东西,并向您的函数传递一个数组,如下所示。(这根本不是最好的做法。我个人会避免这种做法。)这是有道理的。我以前见过这种情况,我想知道为什么会有人走这条路。谢谢,我也会尽量避免,但至少我知道这种方式是存在的。
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]);
}
}