Oi Rafael, tudo bom?
Funcoes globais costumam ser problematicas para a manutenibilidade do software porque nao costuma ser intuitivo pra equipe de onde a funcao veio. Ou seja, onde ela esta sendo declarada.
Por exemplo, no casso de haver a necessidade de alterar o comportamento da funcao trataErro, outro desenvolvedor precisaria vasculhar no codigo ate achar no arquivo global.php
Uma forma de atenuar esse problema seria isolando essa funcao em um arquivo exclusivo.
Ou, melhor ainda, representar essa forma de formatacao de erros em uma classe!
Ou seja, poderiamos criar nossa propria Exception representando essa formatacao. Algo como:
class ExceptionFormatada extends Exception {
public function __construct(Exception $exception, $code = 0, Throwable $previous = null)
{
echo '<pre>';
print_r($exception);
echo '<\pre>';
parent::__construct($exception->getMessage(), $code, $previous);
}
}
Tendo essa representacao, para formatar todas as exceptions que voce quisesse bastaria chamar a classe:
try{
$categoria = new Categoria();
$lista = $categoria->listar();
} catch(Exception $e){
throw new ExceptionFormatada($e);
exit;
}
Evitando a necessidade de carregar a funcao em todas as requisicoes do sistema.
Trabalhar orientado a objetos costuma ser uma abordagem melhor em termos de boas praticas. Se voce nao fez ainda, recomendo os cursos de php e orientacao a objetos aqui da alura.
Ou, ate mesmo, os cursos de Java e orientacao que tambem abrangem bem todos os conceitos =)
Abraco!