新手上路,define定义常量后怎么覆盖或者让先前定义的失效求大佬指点!

前提:发送邮件,根据客户语种加载不同语言包模板,发送不同语种的邮件目前在循环中发送邮件后,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']);
}
呼啦一阵风
浏览 422回答 2
2回答

海绵宝宝撒

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...

拉莫斯之舞

常量是不能改变的。//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];
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript