Как дать аргумент, когда условие выполнено в PHP? - PullRequest
0 голосов
/ 21 сентября 2011

Когда я хочу отправить своим пользователям по электронной почте уведомление о каком-либо событии, я вызову функцию mail () в PHP. Я хочу дать почтовой функции пятый аргумент, но так как он отключен, когда в 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 и прочее. Я просто делаю, я только хочу знать, возможно ли то, что я хочу, и как я буду делать это.

Заранее спасибо!

Ответы [ 2 ]

3 голосов
/ 21 сентября 2011

конечно, вы можете сделать что-то вроде

$args = array('foo', 'bar');
if($blah) $args[] = 'baz';
call_user_func_array('mail', $args);

, но я не думаю, что это так или иначе лучше, чем ваш первый фрагмент

1 голос
/ 21 сентября 2011

Вы должны были бы передать null функции (в случае почты, насколько я знаю, это значение по умолчанию для пятого аргумента).

Так что это будет похоже на: mail($sTo, $sSubject, $sBody, $sHeader, (!$bSafeMode ? $sFifthArgument : null)); Это должно быть разрешено. Смотрите также в качестве примера: http://codepad.org/HerLr9O4:)

Как сказал Фил в комментарии ниже; он, вероятно, проверит количество переданных параметров (я не могу проверить это здесь, но я ожидаю этого). Это в основном означает, что вы застряли с if-else; который отлично читается (и, может быть, даже лучше документирован!):).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...