是否可以在PHP switch
语句中动态生成cases
语句,如hook_mail()
的此示例中所示?在hook_mail()中使用动态电子邮件生成
/*
* Implement hook_mail().
*/
function rsvp_mail($key, &$message, $params) {
$guests = rsvp_query();
foreach ($guests as $account) {
switch($key) {
case "invite $account->uid" :
$message['subject'] = "And invitation for $account->name";
$message['body'][] = 'Some body text.';
$message['body'][] = rsvp_get_link($account);
break;
}
}
}
你能澄清吗?这看起来像一般的hook_mail的滥用。请解释你想完成什么,以及为什么你把它放在hook_mail中。 hook_mail用于填充/修改电子邮件。不过,还有很多其他入口点来启动邮件进程。 – 2011-05-03 03:15:11
@David Fells:这是更全面的:http://stackoverflow.com/questions/5862170/send-one-time-login-link-via-hook-mail – starsinmypockets 2011-05-03 03:27:42
你可能会失去开关,只是问(strpos ($ key,'invite')== 0),或者if(preg_match('!invite \ d +!',$ key)) – yoavmatchulsky 2011-05-03 06:16:24