Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Applicazioni desktop con PHP: un'introduzione

Cosa sono e come si sviluppano applicazioni in PHP da eseguire sul Desktop. Introduzione alla loro creazione e primi esempi d'uso usando PHP-Gtk
Cosa sono e come si sviluppano applicazioni in PHP da eseguire sul Desktop. Introduzione alla loro creazione e primi esempi d'uso usando PHP-Gtk
Link copiato negli appunti

Differenze tra web e desktop application

Tra sviluppare applicazioni per il Web e realizzare desktop application vi sono numerose differenze sia livello concettuale che a livello procedurale, la stessa logica delle applicazioni è sostanzialmente differente: se infatti gli script destinati alle pagine Internet sono basati sull'invio di parametri di input, le applicazioni Desktop sono invece basati sugli eventi.

Normalmente il funzionamento di un'applicazione Web based prevede un client che invia una richiesta ad una macchina server in cui le chiamate sono gestite tramite un programma denominato Web server (come ad esempio Apache); il server Web elabora il codice PHP attraverso l'interprete del linguaggio e invia la risposta al client.

Nelle applicazioni create per il Web, una volta inviato l'input tramite il proprio browser per la navigazione Internet l'utilizzatore non ha generalmente altri compiti da svolgere, né può intervenire nel processo di elaborazione dei parametri che preside alla restituzione degli output. Negli script PHP infatti tutti i dati relativi alle richieste (variabili d'ambiente, input trasmessi tramite metodo etc.), vengono settati prima dell'esecuzione dei comportamenti previsti nel codice e il processo generato si esaurisce con la soddisfazione delle richieste.

Come abbiamo esposto precedentemente, le Desktop application si basano invece su eventi generati e controllabili attraverso delle azioni, come per esempio la pressione di un pulsante attraverso un click del mouse. Naturalmente, per poter controllare il flusso degli eventi l'utente dovrà avere a disposizione uno strumento tramite il quale interagire con l'applicazione, questo strumento prende il nome di "interfaccia": nel caso dello sviluppo orientato al Web questa interfaccia è generalmente un ipertesto, diventa invece una finestra nel caso del Desktop development .

Nel corso di questa breve trattazione analizzeremo le caratteristiche dello sviluppo di applicazioni tramite il Desktop development in PHP e i vantaggi che ne possono derivare per numerosi ambiti di utilizzo.

Perché sviluppare Desktop application

Lo sviluppo di applicazioni lato desktop in PHP presenta numerosi vantaggi rispetto alle tradizionali tecniche per la realizzazione di script lato server, questi vantaggi derivano in particolare dalla possibilità di far interagire i programmi con il sistema operativo in cui sono ospitati:

  • le impostazioni relative all'applicazione potranno essere salvati direttamente nel computer dell'utilizzatore;
  • l'applicazione potrà interagire direttamente con il file system locale della macchina ospitante;
  • è possibile mettere a disposizione interfacce ben più complesse di quelle realizzabili tramite il codice HTML.
  • sarà possibile agire direttamente sui file che costituiscono il programma e sulle basi di dati utilizzate per la memorizzazione delle informazioni;

In una Desktop application tutto fa capo alla stessa postazione locale, l'utilizzatore non dovrà agire attraverso una pagina Web in remoto che le permetterebbe di accedere unicamente all'interfaccia (e comunque non avrebbe la possibilità di modificarla); in questo caso invece tutta l'applicazione è disponibile per eventuali manipolazioni e modifiche così come il database per le interrogazioni e l'allocazione dei dati. Logicamente ciò è vero quando l'utilizzatore ha sia le competenze che i privilegi necessari per poter modificare file e tabelle.

Il discorso fatto non mira naturalmente ad affermare che un'applicazione lato Desktop sia preferibile ad uno script Web based, anzi, vi sono ambiti di utilizzo come per esempio la condivisione delle risorse (contenuti, immagini, file multimediali etc.) in cui lo sviluppo tradizionale è per sua natura preferibile. È vero però che creare una Desktop application consente di realizzare applicazioni su misura per ogni utente, un po' come se avessimo la possibilità di realizzare un sito internet completamente personalizzato per ogni visitatore delle nostre pagine.

Creare Desktop application con PHP-GTK

PHP-GTK è una libreria che fornisce all'utilizzatore uno standard per la creazione di Desktop application in PHP, detto in parole semplici GTK è una estensione di questo linguaggio che mette a disposizione classi, metodi e funzioni per la creazione di applicazioni basate su GUI (graphical user interface). Uno dei vantaggi più importanti dell'utilizzo delle GTK sta nel fatto che questo add-on permette di creare applicazione cross-platform, lo stesso programma potrà essere quindi utilizzato in Windows, Linux o Mac senza la necessità di operare modifiche e ottenendo praticamente lo stesso risultato.

Per reperire GTK è possibile recarsi sulla sezione dedicata al download del sito ufficiale, qui sono disponibili le versioni sia per Windows che per Linux; l'installazione è estremamente semplice, basta copiare i file contenuti dai pacchetti nella cartella PHP del proprio Web Server e abilitare le relative estensione nel file di configurazione php.ini; una volta riavviato il Web server saremo pronti per lavorare.

Un semplice esempio di codice per la creazione di una finestra tramite PHP-GTK potrebbe essere il seguente:

<?php
// controlliamo che il modulo per PHP-GTK sia stato attivato nel php.ini
if (!class_exists('gtk')) die("Controlla che il modulo php-gtk2 sia attivo nel php.ini");

// effettuiamo la chiamata verso la classe preposta alla generazione della finestra 
$finestra = new GtkWindow();

// definiamo il titolo della nostra finestra
$finestra->set_title('Finestra generata con PHP-GTK');

// permettiamo all'utente di chiudere la finestra con un click del mouse
$finestra->connect_simple('destroy', array('gtk', 'main_quit'));

// definiamo il contenuto della finestra
$text = new GtkLabel("Ciao Mondo!");

// poniamo il contenuto all'interno della finestra 
$finestra->add($text);

// mostriamo la finestra a video
$finestra->show_all();

// richiamiamo la classe principale
Gtk::main();

?>

Il codice mostrato non si differenzia da un normale listato scritto in PHP e il funzionamento è molto simile a quello di un comune script realizzato secondo le regole della OOP con qualche peculiarità riguardo ai metodi che entrano in gioco durante l'esecuzione dell'applicazione.

La nostra prima preoccupazione è stata quella di controllare che il modulo per PHP-GTK fosse attivato tra le direttive previste nel php.ini:

if (!class_exists('gtk')) die("Controlla che il modulo php-gtk2 sia attivo nel php.ini");

Questo controllo ci tornerà utile nel momento in cui volessimo spostare il nostro programmino su un altro terminale in cui non sappiamo se è stata attivata l'estensione per GTK; in questo modo verrà bloccata l'esecuzione dell'applicazione prima che possano essere generati degli errori. Vediamo analiticamente il resto del codice.

Il secondo passaggio affrontato è stato quello di richiamare la classe necessaria alla generazione della finestra e del metodo che ci ha consentito di dare ad essa un titolo:

$finestra = new GtkWindow();
$finestra->set_title('Finestra generata con PHP-GTK');

GtkWindow infatti non è altro che un widget con il compito di fornire una finestra ad un'applicazione, queste finestre potranno essere di tre tipi diversi: toplevel, finestra di dialogo o pop-up; set_title() è invece un metodo che appartiene alla classe GtkWindow() e permette di associare un titolo alla finestra generata.

Una volta esaurito il secondo passaggio quello successivo ci ha permesso di mettere a disposizione dell'utilizzatore un sistema per chiudere la finestra generata dall'applicazione:

$finestra->connect_simple('destroy', array('gtk', 'main_quit'));

Grazie a questa stringa di codice sarà possibile produrre inoltre un effetto di terminazione in grado di liberare le risorse precedentemente occupate dal programma, quindi non verrà chiusa soltanto la finestra ma anche l'esecuzione dell'applicazione; connect_simple() è una funzione che accetta come parametri un "segnale" ("destroy") diretto verso il metodo gtk::main_quit() che ha appunto il compito di consentire l'uscita dal programma in modo pulito, cioè rilasciando le risorse impegnate.

GtkLabel() è invece una classe il cui scopo è quello di essere associata ad una piccola porzione di testo, nel nostro caso l'abbiamo utilizzata per dare un titolo alla nostra finestra:

$text = new GtkLabel("Ciao Mondo!");
$finestra->add($text);

GtkLabel() non è adatta, o meglio non è stata concepita, per gestire testi di grandi dimensioni, per questo scopo è stata messa a disposizione infatti un'apposita classe denominata GtkText(); add() è invece il metodo con cui il testo appena creato può essere aggiunto alla finestra.

Infine, siamo passati alla parte relativa alla visualizzazione dell'output che è presieduta dalla chiamata al metodo show_all() specifico per mostrare a video gli oggetti creati tramite GTK; di particolare importanza è il riferimento (Gtk::main();) posto alla fine del listato: si tratta di una chiamata alla classe principale dell'applicazione che presiede al funzionamento di quest'ultima, main() infatti svolge la funzione di mantenere il programma sempre attivo creando un loop che potrà essere arrestato soltanto dall'utilizzatore.

Quando utilizziamo uno script lato server questo è inizialmente inattivo, si attiva sulla base dei parametri di input per poi tornare inattivo una volta soddisfatta una richiesta; grazie a main() è invece possibile mantenere in attesa un'applicazione funzionante, il loop provvederà infatti a mantenerla attiva fino a quando questa non verrà terminata.

Conclusioni

In questa breve trattazione abbiamo affrontato l'argomento relativo alla creazione di Desktop application utilizzando PHP-GTK, un'estensione appositamente concepita per la realizzazione di applicazioni dotate di interfaccia grafica.

Sono state esposte le differenze tra Desktop development e sviluppo di applicazioni Web based tradizionali elencando tutti i vantaggi derivanti da questo approccio alternativo; infine, è stato proposto un semplice esempio relativo alla creazione di una applicazione minimale basata su PHP-GTK.

Per eventuali approfondimenti consigliamo la consultazione della documentazione ufficiale di PHP-GTK o gli articoli scritti su PHP di HTML.it.

Ti consigliamo anche