Originariamente inviato da Santino83_02
Ma non capisco,

la classe che "lancia gli eventi" semplicemente dovrebbe estendere una classe base con la logica event/listener, e quindi richiamare un suo metodo protetto "fire" per lanciare l'evento specificato

poi devono essere le altre classi che vogliono sapere che cosa succede attaccarsi come listeners..

Insomma, hai presente come fa il java? l'actionscript? e simili?

Non capisco il perchè quindi di questa pillola e sarei felice se spiegassi in dettaglio in quali occasioni è utile/efficace/migliore di altre soluzioni

Grazie
rispondo a te ma l'argomento riguarda anche Hysoka:

il problema fondamentale per me è riuscire ad ottenere un trigger sui medhodi richiamati dall' utente e che esistono realmente nella classe. L' unico trigger a disposizione in questo momento è quello sui metodi INESISTENTI (__call() )


detto questo replico all' utilità degli eventi:
quante possibilità ho io di poter 'estendere' un metodo già definito in una classe php?
io penso per esempio al discorso della gestione di un catalogo dove i prezzi e relativi sconti possono essere definiti in base a mille parametri..

Codice PHP:
class prezzo{
    public function 
__construct(){
        
$this->events=new events($this);
        }
    
    
    public function 
set_prezzo($value){
        
// codice...
        
        
$this->fireEvent(__FUNCTION__);
        }
    
    
    function 
sconto_fedelta(){
        
//codice...
        
}
    function 
sconto_rivenditore(){
        
//codice...
        
}
    function 
sconto_primo_acquisto(){
        
//codice...
        
}
    }


$prezzo=new prezzo;



switch(
$user_type){
    case 
1:
       
$prezzo->events->addEvent('set_prezzo',
            function () use (&
$prezzo){
                
$prezzo->sconto_fedelta();
                }
       ) 
    break;
    case 
2:
       
$prezzo->events->addEvent('set_prezzo',
            function () use (&
$prezzo){
                
$prezzo->sconto_rivenditore();
                }
    break;
    case 
3:
       
$prezzo->events->addEvent('set_prezzo',
            function () use (&
$prezzo){
                
$prezzo->sconto_primo_acquisto();
                }
    break;
    }

$prezzo->set_prezzo(1000);

?>