【发布时间】:2017-02-27 00:27:11
【问题描述】:
虽然我自学了很多,但今天我一直在努力解决在函数中调用参数的意外行为。
这是一个示例函数:
public function example($foo = null, $bar = null) {
if ($foo) {
// Do something
}
if ($bar) {
// Do Something
}
}
现在,如果我编写一个如下所示的调用,我希望立即调用 $bar(第二个参数),但事实并非如此 - 这对我来说是有道理的。
$this->example($bar);
有没有办法只调用第二个参数而不使用以下内容?
$this->example(null, $bar);
【问题讨论】:
-
由于您将其定义为参数,因此您需要按以下顺序填写:
$this->example(null, $bar);。否则$bar将被分配为第一个参数。 -
如果有混淆,名称是独立的,即。您可以拨打
$this->example(null, $b);或$this->example($a, $b);或$this->example($blah); -
感谢达伦的回答和纠正我的语法错误。我的问题是,有时我会在开发后期增强功能,并且我试图找到一种方法来专门映射函数的参数,因此我不必编辑/检查项目中的所有调用。那是你可以在 php 中做的事情吗?
-
主要不是。您可能必须连接到
func_get_args()之类的东西并将一个数组传递给您的函数,例如 Example。 (但这根本不是最佳做法。我个人会避免这种做法。) -
这是有道理的。我过去看到过这种情况,想知道为什么有人走那条路。谢谢,我也会尽量避免,但至少我知道这种方式是存在的。
标签: php