1. JAMP DAY 22 Maggio 2010 Relatori: Ruben Patanè Giampiero Ancilletta Università degli Studi di Roma "Tor Vergata"
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12. PROCESSO DI CREAZIONE DI UNA PAGINA FASE 1: creazione dell pagina LETTURA E CARICAMENTO DEL LAYOUT XML GENERAZIONE OUTPUT INIZIALIZZAZIONE DEL FRAMEWORK LETTURA DATI LATO CLIENT POPOLAZIONE OGGETTI RICHIESTA AJAX DEL FRAMEWORK PER IL RECUPERO DEI DATI FASE 2: caricamento dati
13. LETTURA E CARICAMENTO DEL LAYOUT XML GENERAZIONE OUTPUT html_before_load html_load html_after_load INIZIALIZZAZIONE DEL FRAMEWORK Gli eventi PHP: Caricamento della pagina
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
Hinweis der Redaktion
il model fornisce i metodi per accedere ai dati il view visualizza i dati contenuti nel model e si occupa dell'interazione con utenti e agenti; il controller riceve i comandi dell'utente (in genere attraverso il view).
Il Core Il core è formato da classi distinte specifiche per ogni tipo di funzione da svolgere. Le classi interagiscono fra di loro ma consentono una chiara lettura del codice. Il core viene attivato includendo la classe system all'interno della propria pagina php. Alla richiesta della pagina da parte del browser, il core, si occupa di recuperare le impostazioni del framework, di leggerre il sorgente xml (layout), di istanziare gli oggetti, di richiedere i dati e d restituito l'output nel formato richiesto: HTML o PDF. Applicazioni Le applicazioni, per convenzione, sono posizionate nella directory /frm. Ogni pagina può essere considerata come un form della nostra applicazione. Il form è formato da due file uno php e l'altro xml. Il file php contiene la sintassi php e/o javascript, il file xml contiene il codice del layout del form. Tale distinzione consente di avere una netta separazione fra il codice e l'interfaccia grafica. Plugins I plugins sono applicazioni esterne a JAMP, indipendenti e scritte da utenti esterni al team di JAMP. Tali applicazioni, anche se non sono state scritte per il framework, possono interagire con JAMP. I plugins forniti possono variare da release a release.
Spiego i singoli blochi
Gli oggetti Gli oggetti sono indipendenti dal framework, questo significa che l'utente può scrivere e implementare nuovi oggetti a seconda delle sue necessità. Ogni oggetto è formato da un file php, da un file javascript e da un file css. Il file PHP si occupa della generazione del codice HTML da restituire nella pagina e di generare il codice per la visualizzazione nei PDF. Il file javascript, opzionale, consente la lettura e scrittura da datasource e/o implementa funzioni utilizzate dall'oggetto. Il file css, opzionale, consente impostare il foglio di style per l'oggetto.
I form sono formati da due file, il primo contiene il codice php della pagina e il secondo contiene il codice degli oggetti utilizzati.
require_once("./../../class/system.class.php"); Include il framework nella pagina php. $system = new ClsSystem(true); Attiva i metodi del framework, la proprietà true/false esegue/non esegue il carimanento della configurazione. $xml = new ClsXML("form1.xml"); Esegue il caricamento del layout della form. $event = new ClsEvent($xml); Abilita e inoltra il form al gestore degli eventi php. $event->managerRequest(); Gestisce le richieste della pagina.
Gli eventi son il fulcro del funzionamento di JAMP. Gli eventi gestibili dal framework sono di tre tipi: Gli eventi PHP Gli eventi JAVASCRIPT Gli eventi DOM (Javascript) Gli eventi in generale possono essere scritti sia con metodi php sia con metodi javascript a seconda di dove vengono implementati. Generalmente gli eventi PHP e JAVASCRIPT sono gli eventi generati dal framework, invece gli eventi DOM sono gli eventi DOM 2 del browser e quindi della pagina HTML. Gli eventi possono essere intercettati e gestiti dall'utente. Inoltre, per gli eventi JAVASCRIPT, JAMP fornisce un sistema molto potente in grado di intercettare qualsiasi metodo di una classe scritta in JAVASCRIPT.
require_once("./../../class/system.class.php"); Include il framework nella pagina php. $system = new ClsSystem(true); Attiva i metodi del framework, la proprietà true/false esegue/non esegue il carimanento della configurazione. $xml = new ClsXML("form1.xml"); Esegue il caricamento del layout della form. $event = new ClsEvent($xml); Abilita e inoltra il form al gestore degli eventi php. $event->managerRequest(); Gestisce le richieste della pagina.
Gli eventi son il fulcro del funzionamento di JAMP. Gli eventi gestibili dal framework sono di tre tipi: Gli eventi PHP Gli eventi JAVASCRIPT Gli eventi DOM (Javascript) Gli eventi in generale possono essere scritti sia con metodi php sia con metodi javascript a seconda di dove vengono implementati. Generalmente gli eventi PHP e JAVASCRIPT sono gli eventi generati dal framework, invece gli eventi DOM sono gli eventi DOM 2 del browser e quindi della pagina HTML. Gli eventi possono essere intercettati e gestiti dall'utente. Inoltre, per gli eventi JAVASCRIPT, JAMP fornisce un sistema molto potente in grado di intercettare qualsiasi metodo di una classe scritta in JAVASCRIPT.
Gli eventi son il fulcro del funzionamento di JAMP. Gli eventi gestibili dal framework sono di tre tipi: Gli eventi PHP Gli eventi JAVASCRIPT Gli eventi DOM (Javascript) Gli eventi in generale possono essere scritti sia con metodi php sia con metodi javascript a seconda di dove vengono implementati. Generalmente gli eventi PHP e JAVASCRIPT sono gli eventi generati dal framework, invece gli eventi DOM sono gli eventi DOM 2 del browser e quindi della pagina HTML. Gli eventi possono essere intercettati e gestiti dall'utente. Inoltre, per gli eventi JAVASCRIPT, JAMP fornisce un sistema molto potente in grado di intercettare qualsiasi metodo di una classe scritta in JAVASCRIPT.
Gli eventi son il fulcro del funzionamento di JAMP. Gli eventi gestibili dal framework sono di tre tipi: Gli eventi PHP Gli eventi JAVASCRIPT Gli eventi DOM (Javascript) Gli eventi in generale possono essere scritti sia con metodi php sia con metodi javascript a seconda di dove vengono implementati. Generalmente gli eventi PHP e JAVASCRIPT sono gli eventi generati dal framework, invece gli eventi DOM sono gli eventi DOM 2 del browser e quindi della pagina HTML. Gli eventi possono essere intercettati e gestiti dall'utente. Inoltre, per gli eventi JAVASCRIPT, JAMP fornisce un sistema molto potente in grado di intercettare qualsiasi metodo di una classe scritta in JAVASCRIPT.
Gli eventi son il fulcro del funzionamento di JAMP. Gli eventi gestibili dal framework sono di tre tipi: Gli eventi PHP Gli eventi JAVASCRIPT Gli eventi DOM (Javascript) Gli eventi in generale possono essere scritti sia con metodi php sia con metodi javascript a seconda di dove vengono implementati. Generalmente gli eventi PHP e JAVASCRIPT sono gli eventi generati dal framework, invece gli eventi DOM sono gli eventi DOM 2 del browser e quindi della pagina HTML. Gli eventi possono essere intercettati e gestiti dall'utente. Inoltre, per gli eventi JAVASCRIPT, JAMP fornisce un sistema molto potente in grado di intercettare qualsiasi metodo di una classe scritta in JAVASCRIPT.
Gli eventi son il fulcro del funzionamento di JAMP. Gli eventi gestibili dal framework sono di tre tipi: Gli eventi PHP Gli eventi JAVASCRIPT Gli eventi DOM (Javascript) Gli eventi in generale possono essere scritti sia con metodi php sia con metodi javascript a seconda di dove vengono implementati. Generalmente gli eventi PHP e JAVASCRIPT sono gli eventi generati dal framework, invece gli eventi DOM sono gli eventi DOM 2 del browser e quindi della pagina HTML. Gli eventi possono essere intercettati e gestiti dall'utente. Inoltre, per gli eventi JAVASCRIPT, JAMP fornisce un sistema molto potente in grado di intercettare qualsiasi metodo di una classe scritta in JAVASCRIPT.
Gli eventi son il fulcro del funzionamento di JAMP. Gli eventi gestibili dal framework sono di tre tipi: Gli eventi PHP Gli eventi JAVASCRIPT Gli eventi DOM (Javascript) Gli eventi in generale possono essere scritti sia con metodi php sia con metodi javascript a seconda di dove vengono implementati. Generalmente gli eventi PHP e JAVASCRIPT sono gli eventi generati dal framework, invece gli eventi DOM sono gli eventi DOM 2 del browser e quindi della pagina HTML. Gli eventi possono essere intercettati e gestiti dall'utente. Inoltre, per gli eventi JAVASCRIPT, JAMP fornisce un sistema molto potente in grado di intercettare qualsiasi metodo di una classe scritta in JAVASCRIPT.
Gli eventi son il fulcro del funzionamento di JAMP. Gli eventi gestibili dal framework sono di tre tipi: Gli eventi PHP Gli eventi JAVASCRIPT Gli eventi DOM (Javascript) Gli eventi in generale possono essere scritti sia con metodi php sia con metodi javascript a seconda di dove vengono implementati. Generalmente gli eventi PHP e JAVASCRIPT sono gli eventi generati dal framework, invece gli eventi DOM sono gli eventi DOM 2 del browser e quindi della pagina HTML. Gli eventi possono essere intercettati e gestiti dall'utente. Inoltre, per gli eventi JAVASCRIPT, JAMP fornisce un sistema molto potente in grado di intercettare qualsiasi metodo di una classe scritta in JAVASCRIPT.
Gli eventi son il fulcro del funzionamento di JAMP. Gli eventi gestibili dal framework sono di tre tipi: Gli eventi PHP Gli eventi JAVASCRIPT Gli eventi DOM (Javascript) Gli eventi in generale possono essere scritti sia con metodi php sia con metodi javascript a seconda di dove vengono implementati. Generalmente gli eventi PHP e JAVASCRIPT sono gli eventi generati dal framework, invece gli eventi DOM sono gli eventi DOM 2 del browser e quindi della pagina HTML. Gli eventi possono essere intercettati e gestiti dall'utente. Inoltre, per gli eventi JAVASCRIPT, JAMP fornisce un sistema molto potente in grado di intercettare qualsiasi metodo di una classe scritta in JAVASCRIPT.
Gli eventi son il fulcro del funzionamento di JAMP. Gli eventi gestibili dal framework sono di tre tipi: Gli eventi PHP Gli eventi JAVASCRIPT Gli eventi DOM (Javascript) Gli eventi in generale possono essere scritti sia con metodi php sia con metodi javascript a seconda di dove vengono implementati. Generalmente gli eventi PHP e JAVASCRIPT sono gli eventi generati dal framework, invece gli eventi DOM sono gli eventi DOM 2 del browser e quindi della pagina HTML. Gli eventi possono essere intercettati e gestiti dall'utente. Inoltre, per gli eventi JAVASCRIPT, JAMP fornisce un sistema molto potente in grado di intercettare qualsiasi metodo di una classe scritta in JAVASCRIPT.
Gli eventi son il fulcro del funzionamento di JAMP. Gli eventi gestibili dal framework sono di tre tipi: Gli eventi PHP Gli eventi JAVASCRIPT Gli eventi DOM (Javascript) Gli eventi in generale possono essere scritti sia con metodi php sia con metodi javascript a seconda di dove vengono implementati. Generalmente gli eventi PHP e JAVASCRIPT sono gli eventi generati dal framework, invece gli eventi DOM sono gli eventi DOM 2 del browser e quindi della pagina HTML. Gli eventi possono essere intercettati e gestiti dall'utente. Inoltre, per gli eventi JAVASCRIPT, JAMP fornisce un sistema molto potente in grado di intercettare qualsiasi metodo di una classe scritta in JAVASCRIPT.
La funzione scritta dall'utente potrà avere gli stessi parametri della funzione intercettata in quanto saranno inoltrati automaticamente.
La classe SYSTEMEVENT per intercettare l'evento rinomina il metodo aggiungendo il prefisso “__” e riscrive il metodo aggiungendo la chiamata alla funzione definita dall'utente inoltrando tutti i parametri della chiamata. A seconda del metodo di intercettazione utilizzato addBeforeCustomFunction o addAfterCustomFunction il metodo originale della classe viene richiamato dopo o prima della funzione dell'utente.
La classe SYSTEMEVENT per intercettare l'evento rinomina il metodo aggiungendo il prefisso “__” e riscrive il metodo aggiungendo la chiamata alla funzione definita dall'utente inoltrando tutti i parametri della chiamata. A seconda del metodo di intercettazione utilizzato addBeforeCustomFunction o addAfterCustomFunction il metodo originale della classe viene richiamato dopo o prima della funzione dell'utente.
La classe SYSTEMEVENT per intercettare l'evento rinomina il metodo aggiungendo il prefisso “__” e riscrive il metodo aggiungendo la chiamata alla funzione definita dall'utente inoltrando tutti i parametri della chiamata. A seconda del metodo di intercettazione utilizzato addBeforeCustomFunction o addAfterCustomFunction il metodo originale della classe viene richiamato dopo o prima della funzione dell'utente.
La classe SYSTEMEVENT per intercettare l'evento rinomina il metodo aggiungendo il prefisso “__” e riscrive il metodo aggiungendo la chiamata alla funzione definita dall'utente inoltrando tutti i parametri della chiamata. A seconda del metodo di intercettazione utilizzato addBeforeCustomFunction o addAfterCustomFunction il metodo originale della classe viene richiamato dopo o prima della funzione dell'utente.
La funzione scritta dall'utente potrà avere gli stessi parametri della funzione intercettata in quanto saranno inoltrati automaticamente.
La funzione scritta dall'utente potrà avere gli stessi parametri della funzione intercettata in quanto saranno inoltrati automaticamente.
$id E' l'id dell'oggetto nel quale si vuole aggiungere un evento in ascolto incluso ma può indicare anche l'oggetto document e window . $event Nome dell'evento da intercettare. Accetta eventi base ed eventi custom . $function Funzione scaturita dall'evento. $run Opzionale, se true scaturisce l'evento al caricamento della pagina $param Opzionale, consente di specificare i parametri da passare alla funzione associata all'evento.
Per creare un evento custom prima di tutto si deve inserire un listener e nel parametro function si deve inserire il nome della funzione e non la funzione. Per accodare gli eventi alla funzione appena creata si utilizzano i seguenti metodi: $id E' l'id dell'oggetto nel quale si vuole aggiungere un evento in ascolto. $function Nome della funzione dichiarata in addEventListener $call Istruzione o funzione da eseguire alla generazione dell'evento. Le tre funzioni addEvent consentono di raggruppare le funzioni da eseguirle in tre momenti diversi dell'evento.
I datasource sono una collezione di classi PHP create per gestire i dati ossia leggere, modificare, inserire ed eliminare dati da una determinata fonte, per ogni tipologia di sorgente dati esiste una classe dedicata. Il datasource può essere considerato come una sorta di interfaccia tra la fonte di dati e gli oggetti, lo scopo principale è quello di rendere trasparente al controllo l'interazione con la fonte di dati. Per poter utilizzare i datasource bisogna prima di tutto creare una stringa di connessione nel file conf/conn.inc.php con relativi parametri di connessione. JAMP può interagire con diversi tipi di strutture dati come database, filesystem, file xml, tracciati record, LDAP e altre che verranno sviluppate.
* Filesystem // dev device number // ino inode number * // mode inode protection mode // nlink number of links // uid userid of owner * // gid groupid of owner * // rdev device type, if inode device // size size in bytes // atime time of last access (Unix timestamp) // mtime time of last modification (Unix timestamp) // ctime time of last inode change (Unix timestamp) // blksize blocksize of filesystem IO ** // blocks number of blocks allocated ** // md5 md5 checksum * On Windows this will always be 0. ** Only valid on systems supporting the st_blksize type - other systems (e.g. Windows) return -1. * ftp // perms permissions // number inode number * // owner userid of owner // group group of owner // size size in bytes // datetime datatime m-d H:i // md5 md5 checksum * On Windows this will always be 0. * ssh // perms permissions // number inode number * // owner userid of owner // group group of owner // size size in bytes // datetime datatime m-d H:i // md5 md5 checksum
Gli oggetti Gli oggetti sono indipendenti dal framework, questo significa che l'utente può scrivere e implementare nuovi oggetti a seconda delle sue necessità. Ogni oggetto è formato da un file php, da un file javascript e da un file css. Il file PHP si occupa della generazione del codice HTML da restituire nella pagina e di generare il codice per la visualizzazione nei PDF. Il file javascript, opzionale, consente la lettura e scrittura da datasource e/o implementa funzioni utilizzate dall'oggetto. Il file css, opzionale, consente impostare il foglio di style per l'oggetto.