Gestione degli eventi ...

Seguendo il cookbook, mi sono fatto un’idea sugli eventi. In particolare riassumo tutto qui:

EVENTO

/protected/component/NewAnagraficaEvent.php


<?php

class NewAnagraficaEvent extends CModelEvent {

    public $anagrafica;

}

GESTIONE EVENTO NEL MODEL

/protected/models/Anagrafiche.php

(vanno aggiunti questi due metodi)


    public function aggiungiAnagrafica(Anagrafiche $anagrafica) {

        $anagrafica->id = $this->id;

        $evento = new NewAnagraficaEvent();

        $evento->anagrafica = $this;

        $this->onNewAnagrafica($evento);

        return $evento->isValid;

    }

    public function onNewAnagrafica($evento) {

        $this->raiseEvent('onNewAnagrafica', $evento);

    }

GESTIONE EVENTO (NOTIFICA)

/protected/components/NotificaNuovaAnagrafica.php


<?php

class NotificaNuovaAnagrafica {

    public function notifica($event) {

        $anagrafica = $event->anagrafica;

        Yii::log("\n\n\n" . 'Nuova Anagrafica inserita: ' . ($anagrafica->username), CLogger::LEVEL_INFO);

    }

}

GESTIONE EVENTO NEL CONTROLLER




    public function actionCreate() {

        $model = new Anagrafiche;

        if (isset($_POST['Anagrafiche'])) {

            $model->attributes = $_POST['Anagrafiche'];

            if ($model->save()) {

                

                $model->onNewAnagrafica = array(new NotificaNuovaAnagrafica, 'notifica');

                $model->onNewAnagrafica = function () {

                  Yii::log('Log in linea =))))))');  

                };

                $model->aggiungiAnagrafica($model);

                

                    $this->redirect(array('view', 'id' => $model->id));

                

            }

        }

        $this->render('create', array(

            'model' => $model,

        ));

    }



Yii credo sia l’unico o uno dei pochi framework che ha il supporto degli eventi. Voi che cosa ne pensate? Nell’esempio che ho scritto … faccio del semplice log, ma se l’evento gestito fosse la registrazione di un utente? E se la notifica fosse una email agli amministratori? Insomma … l’invio della email lo metterei direttamente nel controller. Che vantaggi ho da questa feature?

La prima cosa che mi viene in mente, è che posso isolare il codice dell’evento dal controller. Mi sembra decisamente ordinato. Pulito.

Oh! Nella gestione del controller ho provato ad usare una funzione anonima. Funziona. Ma quanto è bello php!?

Ciao, vengo anche dal mondo Actionscript3, dove la gestione degli eventi è usata in maniera massiccia, quando ieri ho letto che c’erano gli eventi ho pensato che fosse una grande cosa, perché con gli eventi abbiamo una grande tracciabilità. Effettivamente non avevo mai sentito dire degli eventi in PHP, ma sicuramente sono un bel vantaggio!

P.s. Lo consigli il cookbook?

Sembra interessante, ma ancora lontano per me e forse, per i tanti niubbioni che si affacciano su questo framework.

Ti dico cosa non è chiaro per me, così da darti uno spunto di riflessione per migliorare la stesura dei tuoi post e magari del tuo futuro libro.

[color=#1C2837][size=2]GESTIONE EVENTO NEL MODEL => ok chiaro: devo inserire questo nel modello[/size][/color]

[color=#1C2837][size=2]GESTIONE EVENTO NEL CONTROLLER[/size][/color][color=#1C2837][size=2] [/size][/color][color=#1C2837][size=2]=> ok chiaro: devo inserire questo nel controller[/size][/color]

[color=#1C2837][size=2]EVENTO => e dove me lo metto?[/size][/color]

[color=#1C2837][size=2]GESTIONE EVENTO (NOTIFICA) => stessa cosa, boh[/size][/color]

[color=#1C2837][size=2]

[/size][/color]

[size="2"][color="#1c2837"]Secondo la mia modesta opinione, sarebbe più proficuo se postassi spezzoni di codice interi, tutte le unit.[/color][/size]

[size=“2”][color="#1c2837"]Altrimenti dai l’idea di non volerti ‘sbottonare’[/color][/size]

[size="2"][color="#1c2837"]Probabilmente per chi è avanti è tutto chiaro, ma per gli altri no.[/color][/size]

[size="2"][color="#1c2837"]

[/color][/size]

[size="2"][color="#1c2837"]Potresti prendere spunto da Stefano che spiega molto bene ai newbie (beh lui lo fa di mestiere :-)[/color][/size]

[size="2"][color="#1c2837"]Con 8 post ha spiegato ai principianti come sviluppare un forum.[/color][/size]

[size="2"][color="#1c2837"]

[/color][/size]

[size="2"][color="#1c2837"]Ha ragione paskuale, quando dice che yii è fantastico ma è un pò carente di esempi.[/color][/size]

[size="2"][color="#1c2837"]Io sono sicuro che per rifare quel forum con yii ci vorranno al massimo 5 post.[/color][/size]

[color="#1c2837"][size="2"]Però è una sensazione, perché di fatto, al momento, non sono ancora in grado di farlo.[/size][/color]

[color="#1c2837"][size=“2”]Sono solo riuscito ad abbozzare l’autenticazione e la registrazione.[/size][/color]

[color="#1c2837"][size="2"]Ed è stata molto apprezzata, proprio da chi si sta avvicinando, in quanto fa intuire la potenza di yii.[/size][/color]

[color="#1c2837"][size="2"]E soprattutto è molto chiaro in quanto contiene intere unit.[/size][/color]

[color="#1c2837"][size="2"]

[/size][/color]

[color="#1c2837"][size="2"]Pensa che bello sarebbe se esistessero questi 5 post che spiegano come realizzare un forum con yii.[/size][/color]

[color="#1c2837"][size="2"]La gente avrebbe la possibilità di confrontare cosa significa scrivere la stessa applicazione con yii e senza[/size][/color]

[size="2"][color="#1c2837"]La gente potrebbe capire le basi di yii così da avere una cultura di base che poi le permetta di trarre profitto da questo forum.[/color][/size]

[color="#1c2837"][size="2"]A quel punto si, che puoi postare piccoli spezzoni d codice, perché le logiche sarebbero chiare a tutti.[/size][/color]

[size=“2”][color="#1c2837"]Puoi parlare di tutti i vantaggi dell’energia termica, ma se poi non so accendere il fuoco…[/color][/size]

[size="2"][color="#1c2837"]

[/color][/size]

[size="2"][color="#1c2837"]n.b.[/color][/size]

[size="2"][color="#1c2837"]La mia vuole essere solo una critica costruttiva di miglioramento[/color][/size]

[size="2"][color="#1c2837"]e grazie per tutto quello che fai, alla fine la maggior parte dei problemi finora me li avete risolti tu e mdomba.[/color][/size]

[color="#1c2837"][size="2"]

[/size][/color]

[color="#1c2837"][size="2"]

[/size][/color]

[color="#1c2837"][size="2"]

[/size][/color]

[color="#1c2837"][size="2"]

[/size][/color]

[size="2"][color="#1c2837"]

[/color][/size]

Io son sopratutto un frutto di mdomba, quindi ringraziamo lui se io posso aiutare voi =). In ogni caso, ho corretto il mio post indicando il percorso dei files. Il codice è funzionante. Non so se è scritto in modo corretto al 100%: non so se sono state seguite tutte le buone pratiche. In ogni caso è un buon punto di partenza.