Sto sperimentando la realizzazione di alcune classi php e mi trovo di fronte a un quesito: mettiamo di avere una classe con due metodi, A e B, che ognuno a loro volta invoca il metodo C. Io voglio che il metodo C intercetti il metodo è stato invocato (se da A o da B). Allego un esempio funzionante, ma la soluzione che propongo è fin troppo banale, in quanto per ottenere il risultato ottenuto, ho passato un parametro attraverso il metodo invocante, ed è una cosa che non vorrei fare. ( dico una cavolata, non esiste qualcosa tipo get_parent_method()?)
Se mi sono riuscito a spiegare, avete qualche idea?Codice PHP:
<?php
class prova {
function func_A() {
$this->func_C("func_A");
}
function func_B() {
$this->func_C("func_B");
}
function func_C($method) {
print("func_C invoked from ".$method."
");
}
}
$test=new prova();
$test->func_A();
$test->func_B();
//return
//func_C invoked from func_A
//func_C invoked from func_B
?>