Ciao ragazzi, ho un grosso dilemma...
ho 3 classi (Warning, Notice, Error) con dei metodi addMessage e getMessages. Io vorrei fare in modo di avere una situazione del genere
Codice PHP:
function mioMetodo(){
  if(
bla bla bla bla){
    
esegui;
  }
  else{
    
Warning::addMessage("l'esecuzione di questo metodo è stata ignorata");
  }
}
function 
mioMetodo2(){
  if(
bla bla bla bla){
    
esegui;
  }
  else{
    
Error::addMessage("l'esecuzione di questo metodo è stata ignorata e il programma verrà terminato");
  }

Ora, vorrei avere una gestione dei messaggi, creata all'intero delle 3 classi (Warning, Notice, Error) del tipo
Codice PHP:
CLASSE WARNING
addMEssage
($msg){
  print 
"Il metodo $nomeMetodo della classe $nomeClasse richiamato da $classeCheRichiamaIlMetodo nel $nomeDelFile alla linea $lineaDelFile ha prodotto un warning: $msg";
}
CLASSE ERROR
addMEssage
($msg){
  print 
"Il metodo $nomeMetodo della classe $nomeClasse richiamato da $classeCheRichiamaIlMetodo nel $nomeDelFile alla linea $lineaDelFile ha prodotto un error: $msg";
  die();

utilizzando debug_backtrace() ho tutte quelle informazioni che mi servono; il problema è che, non sapendo chi è il chiamante del metodo che va in errore non riesco a capire come possa risalire lo stack per utilizzare le informazioni in quanto potrei avere, ad esempio, due situazioni del tipo
Codice PHP:
index.php
new classeA();

classeA.php
classeA
{
function 
__construct(){
  new 
classeB();
}

classeB.php
classeB
{
  function 
__construct(){
    new 
classeX()->mioMetodo();
  }
}

index.php
new classeA();

classeA.php
classeA
{
function 
__construct(){
    new 
classeX()->mioMetodo();

quindi lo stack, giustamente, è diverso e cambia il livello del chiamante...sto sbagliando tutta l'architettura, vero?
Cosa mi consigliate come architettura per un sistema di gestione warning, errore, notice?
O se la mia attuale non è così errata, come posso valorizzare le variabili che mi servirebbero?

Grazie a tutti e scusate per la lunghezza