当我想给我的用户发邮件通知他们一些事件时,我将调用PHP中的mail()函数。我想为mail函数提供第五个参数,但由于在safe_mode下禁用了此功能,因此mail()函数在提供此参数时将返回false。我的问题基本上是:
我怎么写这段代码:
if (!$bSafeMode) {
mail($sTo, $sSubject, $sBody, $sHeader, $sFifthArgument);
} else {
mail($sTo, $sSubject, $sBody, $sHeader);
}
但是以这样的方式:
mail($sTo, $sSubject, $sBody, $sHeader, (!$bSafeMode? $sFifthArgument : ''));
显然,我给你看的这段代码不起作用,但我想知道是否有类似的东西,这样我就可以保持我的代码更整洁。
请不要和我争论为什么我想要这种方式,为什么我想检查safe_mode和东西。我只是想知道我想要的是否可能,以及我将如何去做。
提前感谢!
当然,你也可以这样做
$args = array('foo', 'bar');
if($blah) $args[] = 'baz';
call_user_func_array('mail', $args);
但是我不认为这比你的第一个片段好
您必须将null
传递给函数(据我所知,在邮件的情况下,这也是第五个参数的默认值)。
就像:mail($sTo, $sSubject, $sBody, $sHeader, (!$bSafeMode ? $sFifthArgument : null));
这应该是允许的。参见示例:http://codepad.org/HerLr9O4:)
正如Phil在下面的评论中提到的;它可能会检查传递的参数数量(我不能在这里测试;但我希望如此)。这基本上意味着你被"如果-否则"困住了;这是完全可读的(也许甚至更好的文档!):)。