我正在研究一个简单的课程,以便了解OOP,我需要一些功能方面的帮助。该函数接收各种参数,其中一些是可选的:
public function Test($req, $alsoreq, $notreq = null, $notreq2 = null, $notreq3 = null)
{
...
}
如何调用该函数,传递两个第一个参数和最后一个参数?
例如:
Test('req', 'alsoreq', 'notreq3');
忽略notreq2
和notreq
?
我试过
Test('req', 'alsoreq', '', '', 'notreq3');
但这看起来很丑陋和黑客。
答案 0 :(得分:8)
你做不到。想想看,如果你能做到这一点,那么PHP如何能够判断第三个参数是$notreq
,$notreq2
还是$notreq3
?一种不那么强硬的方式是:
Test($req, $alsoreq, NULL, NULL, $notreq3);
正如您清楚地表明前两个可选参数是NULL
。
明智地选择参数的顺序,因此更经常使用的参数顺序是第一位的 或者,您可以使用数组:
public function Test($req, $alsoreq, array $notreq) { ... }
// no optional args
Test($req, $alsoreq);
$optional = array('arg1' => 'something', 'arg2' => 'something else');
Test($req, $alsoreq, $optional);
$optional = array('arg3' => 'hello');
Test($req, $alsoreq, $optional);
答案 1 :(得分:1)
似乎没有办法。 正如php manual所述:
请注意,使用默认值时 参数,任何默认值都应该打开 任何非违约的右侧 参数;否则,事情就不会发生 按预期工作。
您正尝试将非默认值(notreq3)置于默认右侧(notreq2,notreq1)。 丑陋和hackish方式可能更正确。
此致 哔叽
答案 2 :(得分:0)
aboutMe
的函数。$name
和$age
。echo out "Hello! My name is $name, and I am $age years old."
。<强>提示强>
"Hello! My name is " . $name . " and I am " . $age . " years old."