前提:发送邮件,根据客户语种加载不同语言包模板,发送不同语种的邮件目前在循环中发送邮件后,require语言包的时候常量都是取的第一次define的常量值,如果第一次加载是英语语言包,后面即便是俄语客户,加载了俄语语言包后,邮件里面的内容依然是英语;现在有没有什么好的解决方案?类似代码如下:functionsendEmail($languageId){switch($languageId){case1:require('email_en.php');break;case2:require('email_ru.php');break;default:require('email_en.php');break;}}$emailData=[['id'=>1,'language_id'=>1],['id'=>2,'language_id'=>2],['id'=>3,'language_id'=>3],['id'=>4,'language_id'=>4],];foreach($emailDataas$v){sendEmail($v['language_id']);}
2 回答
海绵宝宝撒
TA贡献1809条经验 获得超8个赞
define定义的是常量,不能重定义吧。只能换一种方式了,用$GLOBALS什么的。还可以email_en.php返回数据switch($languageId){case1:$emailData=require('email_en.php');break;case2:$emailData=require('email_ru.php');break;default:$emailData=require('email_en.php');break;}//dosomethingwith$emailData...
拉莫斯之舞
TA贡献1820条经验 获得超10个赞
常量是不能改变的。//email_en.phpreturn['_NAME_'=>'name',//.....];//sendEmail.php$language=require('email_en.php');另外,语言包不大的话,可以一次性全部载入。$languages=[1=>require('email_en.php'),2=>require('email_ru.php'),//...];$language=$languages[$language_id];
添加回答
举报
0/150
提交
取消