请原谅我的新生儿。在基于ASP.Net的网站上工作时,我记得看到一些方法可以接受不同数量的参数。具体来说,他们会做不同的事情,具体取决于传递给他们的参数数量。
例如:
Email.sendEmail(address,subject,body);
会做一些不同的事情:
Email.sendEmail(address,bccaddresses,subject,body);
PHP中的方法是否可以做类似的事情?这叫什么东西?或者我只是完全错误地记错了什么?
答案 0 :(得分:3)
function sendEmail($address, $bccaddresses, $subject, $body=NULL) {
if ($body === NULL) {
$bccaddresses=""; //or whatever default you want
//shift arguments:
$subject = $bccaddresses; $body = $subject;
}
}
答案 1 :(得分:2)
您可以使用关联数组作为参数,并使用extract()。
function sendMail($opts){
extract($opts, EXTR_SKIP); // EXTR_SKIP prevents extract from overwriting anything already in the symbol table
if(isset($bccaddresses)){
// do something with the bcc addresses
}
echo "sending some mail to $to with subject $subject";
}
sendMail(array("to"=>"test@test.com", "subject"=>"Hi!"));
这使您可以将参数作为命名值传递,并根据需要使用可选值。
答案 2 :(得分:1)
您正在搜索 func_num_args()
和 func_get_args()
。
另见相关示例,它向您展示了如何完全按照您的需要进行操作。
答案 3 :(得分:1)
在PHP中,您可以为函数设置默认值。
function myFunc($val1 = 1, $val2 = 2, $val3 = 3){
echo "$val1 $val2 $val3";
}
myFunc(); // outputs 1 2 3
myFunc(5); // outputs 5 2 3
myFunc(8, 1); // outputs 8 1 3