rispondo a te ma l'argomento riguarda anche Hysoka: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![]()
![]()
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);
?>


Rispondi quotando