Метод 1: передать $ phrases, $ tts_phrases в качестве параметров
function return_phrase(array $phrases, array $ttphrases, $phrase_name="", $fallback="",$default ="text"){
$next= (isset($default) && $default =="mp3") ? 'text' : 'mp3';
if(isset($tts_phrases[$default][$phrase_name])){
return $phrases[$default][$phrase_name]);
}
else if(isset($tts_phrases[$next][$phrase_name])){
return $phrases[$next][$phrase_name]);
}
else{
return $fallback;
}
}
Метод 2: Сделать $ phrases, $ tts_phrases глобальными (плохо!)
function return_phrase($phrase_name="", $fallback="",$default ="text"){
global $phrases, $tts_phrases;
$next= (isset($default) && $default =="mp3") ? 'text' : 'mp3';
if(isset($tts_phrases[$default][$phrase_name])){
return $phrases[$default][$phrase_name]);
}
else if(isset($tts_phrases[$next][$phrase_name])){
return $phrases[$next][$phrase_name]);
}
else{
return $fallback;
}
}
Использование глобальных переменныхбыстрое и простое исправление, но как только ваше приложение становится больше, их становится очень трудно отслеживать.Например, возьмите фрагмент старого кода, с которым мне приходится иметь дело на работе:
function foo() {
global $mysqldsn, $ldapdsn, $autologout_timer, $isMobileDevice, logout_fail_limit, $logout_fail_window, $lang, $project_contact_email, $project_contact_name ... (50 or 60 more global variables following)
...
}
Каждый раз, когда я смотрю на одну из страниц, которая просто вытаскивает одну из этих переменных из воздуха, яCtrl + F всего проекта и убедитесь, что каждое небольшое изменение не испортило все приложение.Когда вы храните свои переменные в локальной области видимости, вы точно знаете, что вы меняете.