Programmazione ad eventi in PHP Implementare gli eventi e gestire una coda di messaggi



Documenti analoghi
Reflection in Java. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A

Corso di Programmazione ad Oggetti

Corso di Fondamenti di Informatica

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Progettazione : Design Pattern Creazionali

JavaScript. crash course. by Stefano Burigat

GESTIONE INFORMATICA DEI DATI AZIENDALI

La struttura dati ad albero binario

Algoritmi per suddividere il testo in righe in un editor di testo

Procedure memorizzate SQL-2003/PSM. Forma base di PSM. Parametri in PSM

Programmazione a Oggetti Lezione 10. Ereditarieta

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

dall argomento argomento della malloc()

Laboratorio Progettazione Web PHP e MySQL. Andrea Marchetti IIT-CNR 2013/2014

Le command line di Java

UNA (TROPPO) BREVE STORIA DEI LINGUAGGI DI PROGRAMMAZIONE

Tipi di Dato Ricorsivi

INFORMATICA 1 L. Mezzalira

Creare client statici

Il calcolatore - Applicazioni

Corso di programmazione di sistemi mobile 1. Android. Google Cloud Messaging

Grafico della parabola

PHP: Interfacce; Gestione errori ed eccezioni. Pasqualetti Veronica

Come trattare il risultato di un comando SQL (relazioni) che

Inizializzazione, Assegnamento e Distruzione di Classi

Ottava Esercitazione. introduzione ai thread java mutua esclusione

LA REALIZZAZIONE DI APPLICAZIONI ALCUNE ARCHITETTURE

Eventi di azione. // con interfaccia per eventi di azione

LA REALIZZAZIONE DI APPLICAZIONI. Quattro parti: Gestione dati. Business rules. Logica applicativa. Interfaccia utente. Molte possibili architetture

Introduzione alla programmazione in C

MOBILE WEB DESIGN TUTORIAL ANDROID METAIO AUGMENTED REALITY

Laboratorio di Algoritmi e Strutture Dati

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Le Liste. Elisa Marengo. Università degli Studi di Torino Dipartimento di Informatica. Elisa Marengo (UNITO) Le Liste 1 / 31

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Introduzione alla programmazione Java. Dott. Ing. M. Banci, PhD

CAPITOLO 7 - SCAMBIO DI MESSAGGI

A. Carullo Introduzione a Visual Basic. Introduzione a

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A Esercitazione. Programmazione Object Oriented in Java

Introduzione ai tipi di dato astratti: applicazione alle liste

Utilizzare il NetBeans GUI Builder. Dott. Ing. M. Banci, PhD

C++ E QT, BINOMIO PERFETTO

ProgettoSMS. Manuale Gateway Web Services

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)

Laboratorio Progettazione Web PHP e MySQL - Lezione 9. Andrea Marchetti IIT-CNR andrea.marchetti@iit.cnr.ita 2012/2013

Esercitazione n 4. Obiettivi

Realizzare una piccola chat in php senza database

ez publish, un CMS Open Source di classe Enterprise Introduzione di base all estensibilità del sistema

LISTE, INSIEMI, ALBERI E RICORSIONE

Realizzazione di una classe con un associazione

Laboratorio di Sistemi Distribuiti Leonardo Mariani

Introduzione MFC. CWinApp. CWinApp. Costruzione di Interfacce Lezione 16 Primi passi MFC.

Chat. Si ha un server in ascolto sulla porta Quando un client richiede la connessione, il server risponde con: Connessione accettata.

3. La sintassi di Java

Linee guida per la programmazione di transazioni in PL/SQL

Scope e visibilità per classi

Design Pattern in Java

Oggetti Lezione 3. aspetti generali e definizione di classi I

Appunti tratti dal videocorso on-line di Algoritmi e Programmazione Avanzata By ALeXio

Programmazione ad Oggetti Modulo A (Esame del 11/9/2015)

Classi Oggetti public private this static static

Computazione multi-processo. Condivisione, Comunicazione e Sincronizzazione dei Processi. Segnali. Processi e Threads Pt. 2

Le basi della grafica in Java. Prof. Francesco Accarino IIS Altiero Spinelli via Leopardi 132 Sesto san Giovanni

Java: Compilatore e Interprete

Programmazione Orientata agli Oggetti in Linguaggio Java

Il linguaggio C# Eventi ed eccezioni

SOMMARIO Coda (queue): QUEUE. QUEUE : specifica QUEUE

Inprise/Borland Forum 2000

Laboratorio di Informatica Lezione 2

FONDAMENTI di INFORMATICA L. Mezzalira

Basi di dati (6) Docente: Andrea Bulgarelli. Università di Modena e Reggio Emilia. andrea.bulgarelli@gmail.com Argomento: T-SQL (1.

Utilizzo della Intranet, forum privati Soci e Staff

Esercizi (1-2): da: TCP/IP Sockets in C (Donahoo-Calvert)

P a s q u a l e t t i V e r o n i c a

Lezione 4. Massimiliano Palese IEEE Student Member

Il SOFTWARE DI BASE (o SOFTWARE DI SISTEMA)

Informatica 3. Informatica 3. LEZIONE 12: Liste. Lezione 12 - Modulo 1. Posizione corrente. Introduzione

Esercitazione sui Design Pattern

AA Nomi, binding

DESIGN PATTERN CREAZIONALI INGEGNERIA DEL SOFTWARE INTRODUZIONE SINGLETON. Scopo dei design pattern creazionali

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Sistemi operativi. Esempi di sistemi operativi

GESTIONE DEI PROCESSI

INTRODUZIONE AI PRINCIPI DELLO SVILUPPO DI APPLICAZIONI WEB INTERATTIVE

Librerie. Laboratorio di Informatica Antonio Monteleone 28

19. Introduzione al multi-threading

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Funzioni. Il modello console. Interfaccia in modalità console

Il paradigma OO e le Classi

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti

Alfabeto ed elementi lessicali del linguaggio C

Usare Python in Linux

Prossime lezioni. Dai TDA agli oggetti. Riassunto. Riassunto TDA. Oggi. Stefano Mizzaro 1

Multithreading in Java. Fondamenti di Sistemi Informativi

Eredità in C++ Corso di Linguaggi di Programmazione ad Oggetti 1. a cura di Giancarlo Cherchi

Object Oriented Programming

Il software e la programmazione

15 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Esercitazioni di PROGETTAZIONE DEL SOFTWARE A.A

Transcript:

Implementare gli eventi e gestire una coda di messaggi Implementare in PHP la programmazione ad eventi Creare e gestire una coda di messaggi Usare gli eventi per scrivere componenti riusabili Gestire una pagina web usando gli eventi Federico Partenzi federico@nextware.it

Paradigma della programmazione ad eventi Flusso programma determinato dal verificarsi eventi esterni Impone uso di tecniche flessibili ed elaborazione asincrona informazione Si basa sul principio di imporre meno vincoli possibili al programmatore modeless Usata per programmare GUI o parti del sistema operativo (CPU ed Interrupt)

Pattern design per la programmazione ad eventi Observer Pattern

Pattern design per la programmazione ad eventi Extended Handlers Pattern

Pattern design per la programmazione ad eventi Eventi catturati tramite polling all interno di un programma con loop infinito Coda degli eventi contiene eventi in attesa di essere processati. Dispatcher effettua la chiamata ad un gestore di eventi Event Handlers Gestori eventi (Event Handlers) brevi sotto programmi che gestiscono evento Spesso i gestori degli eventi possono generare altri eventi (trigger) da inserire nella coda.

Un gestore di eventi in metalinguaggio while (true) { e = getevent(); if (isevent(e)) { handleevent(e); // La funzione handleevent chiama l oggetto // che si è registrato per processare l evento. else { idle();

Eventi e messaggi in windows Funzioni usate per gestire messaggi GetMessage SendMessage e PostMessage DispatchMessage Struttura di un messaggio typedef struct tagmsg { HWND hwnd; // handle della finestra WORD message; // numero messaggio WORD wparam; // informazione addizionale dipendente dal messaggio LONG lparam; // informazione addizionale dipendente dal messaggio DWORD time; // ora a cui è stato spedito il messaggio POINT pt; // poszione del cursore quando è stato spedito il messaggio MSG;

Come si programma ad eventi con altri linguaggi Esempio di codice in c# public class Publisher { // Declare the delegate (if using non-generic pattern). public delegate void SampleEventHandler(object sender, SampleEventArgs e); // Declare the event. public event SampleEventHandler SampleEvent; // Wrap the event in a protected virtual method // to enable derived classes to raise the event. protected virtual void RaiseSampleEvent() { // Raise the event by using the () operator. SampleEvent(this, new SampleEventArgs("Hello")); c = new Publisher(); c. SampleEvent += new SampleEventHandler (ontestevent); c.raisesampleevent(); public static void ontestevent(){ Console.WriteLine( Hello World! );

Come si programma ad eventi con altri linguaggi Esempio di codice in Delphi type TStateChangeEvent = procedure (Sender : TObject; State : TState) of object; TSampleComponent = class(tsecondcomponent) private { Private declarations FOnMyEvent : TNotifyEvent; protected { Protected declarations public { Public declarations constructor Create(AOwner : TComponent); override; destructor Destroy; override; procedure MyEvent; override; published { Published declarations property OnMyEvent : TNotifyEvent read FOnMyEvent write FOnMyEvent; end; procedure TSampleComponent.MyEvent; begin inherited; //This calls TSecondComponent.MyEvent if Assigned(OnMyEvent) then OnMyEvent(Self); end;

Programmare ad oggetti in PHP5 Esempio di codice in Delphi Costruttori e Distruttori ( construct destruct ) Visibilita dei membri ( public, private, protected ) Operatore Scope Resolution ( :: ) class SimpleClass { // member declaration public $var = 'a default value'; // method declaration public function displayvar() { echo $this->var;

Come si può programmare ad eventi in php Php non supporta la programmazione ad eventi Come è possibile realizzare la programmazione ad eventi method_exists call_user_func_array call_user_func

Creare un Dispatcher in PHP function DispachEvent($aEventName,&$aParams = null){ if (is_array($aparams)) { if (method_exists(&$this, $aeventname)) { $result = call_user_func_array(array(&$this, $aeventname),&$aparams); else if (function_exists($aeventname)) { $result = call_user_func_array($aeventname,&$this,&$aparams); else { if (method_exists(&$this, $aeventname)) { $result = call_user_func(array(&$this, $aeventname),&$aparams); else if (function_exists($aeventname)) { $result = call_user_func($aeventname,&$this,&$aparams); return $result;

Creare la coda dei messaggi Creare la classe GenericEventListener Il metodo RegisterEvent Formato del messaggio La priorità dei messaggi Il metodo ProcessEvent Scorrere la lista dei messaggi Richiamare l evento collegato

Creare la coda dei messaggi Usare gli eventi per creare componenti Vantaggi dei componenti che usano eventi Pensare una pagina web ad eventi Gestire la coda dei messaggi della pagina Estendere la classe GenericEventListener e creare la classe WebPageEventListener Vantaggi della coda dei messaggi

Esempi Analisi codice Esempio Esempio1.php semplice implementazione eventi in un oggetto Esempio2.php come utilizzare gli eventi per la visualizzazione dei dati Esempio3.php semplice implementazione coda eventi Esempio4.php Gestire una form usando eventi e coda messaggi

Domande e risposte Domande e Risposte materiale e slides www.nextware.it