当我想邮寄我的用户以通知他们某些事件时,我将在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和东西。我只是这样做,我只想知道我想要的是否可行以及我将如何去做。
提前致谢!
答案 0 :(得分:3)
当然,您可以执行类似
的操作$args = array('foo', 'bar');
if($blah) $args[] = 'baz';
call_user_func_array('mail', $args);
但我不认为这比你的第一个片段
更好答案 1 :(得分:1)
你必须将null
传递给函数(就邮件来说,就我所知,第五个参数的默认值也是如此)。
所以它应该是:mail($sTo, $sSubject, $sBody, $sHeader, (!$bSafeMode ? $sFifthArgument : null));
应该被允许。另请参见示例:http://codepad.org/HerLr9O4:)
菲尔在下面的评论中提到过;它可能会检查传递的参数量(我不能在这里测试;但我希望如此)。这基本上意味着你被if-else困住了;这是完全可读的(甚至可能更好的可记录!):)。