Глобальные переменные обычно считаются очень плохим стилем. Я бы сказал, что всякий раз, когда вам нужно использовать ключевое слово global или статическое свойство класса (и, таким образом, включая печально известный Singleton), вы должны серьезно пересмотреть то, что вы делаете. Может быть немного больше работы, чтобы избежать глобальных переменных, но это огромный бонус к поддержке кода. Этот конкретный пример может быть лучше выражен с помощью:
function foo($fu, $bah) {
if (something()) {
$fu->doSomething();
} else {
$bah->doSomething();
}
}
Если вам не нравится передавать много параметров, вы можете использовать классы для их инкапсуляции или, возможно, это признак того, что вы должны по-разному кодировать свой код.