Parece que você não está entendendo o que é o $GLOBALS. Ele é só uma forma de se referir a variáveis globais. Melhor mostrar com código:
<?php
$bd = new Database();
?><?php
$GLOBALS['bd'] = new Database();
?>
É a mesma coisa, porque $bd e $GLOBALS['bd'] são a mesma coisa.<?php
$x = '8';
function printx(){
global $x;
echo $x;
}
?><?php
$x = '8';
function printx(){
echo $GLOBALS['x'];
}
?>
De novo, as duas funções são a mesma coisa.
Então eu não preciso declarar explicitamente?
<?php
global $variavel;
?>
Apenas declaro fora do escopo de classe e função, e posso referenciá-la por meio de $GLOBALS["nome_da_var"]?
Mais uma pergunta, é uma má prática de programação utilizar um objeto como global? Seria recomendado passar sempre uma cópia (ou referência se preferir otimização de memória)?