Struttura e gestione di un’applicazione web con PHP e Zend Framework

Come ben sai, PHP, è uno dei più diffusi linguaggi di programmazione lato server utilizzato per sviluppare web application. Ma forse non sai che per sviluppare una applicazione web, indipendentemente dal linguaggio di programmazione utilizzato, è necessario creare una struttura efficace del software al fine di poterla gestire e manutenere nel migliore dei modi. Per fare questo è indispensabile utilizzare un pattern architetturale, come il Model-View-Controller (MVC). Questo modello architetturale suddivide un’applicazione web in tre moduli distinti e separati tra loro: Modello, Vista e Controller.

Questo significa che è possibile creare applicazioni che sono più strutturate, modulari, riutilizzabili e mantenibili.Tutte le moderne applicazioni web utilizzano questo tipo di architettura. per farlo, in PHP, esistono numerose librerie e framework gratuiti che con un semplice comando creano la struttura iniziale dell’applicazione e la rendono immediatamente avviabile. In questo paragrafo vedremo come esempio MVC un’applicazione sviluppata con la libreria Zend Framework.


Leggi anche: Realizzare un sito web con PHP e CodeIgniter 4


1. Introduzione a Zend Framework

Uno sviluppatore, all’inizio di ogni nuovo progetto software, si trova inevitabilmente a creare una struttura del software che sia solida ed efficace. Quello che conta è che questa struttura sia mantenuta per tutto il ciclo di vita dell’applicazione. Questo approccio porterà a minori costi di manutenzione, migliori prestazioni e una più facile espansione e manutenzione del codice. A questo proposito, Zend Framework ti aiuta enormemente e si presta molto bene a sviluppare applicazioni web in modo efficiente, fornendo esempi pratici di modelli di architettura già collaudati come Model-View-Controller (MVC) o Active Record.

Ora, prima di procedere, è necessario installare un server web. Esistono tanti server web in circolazione, ma quello più diffuso è senza dubbio Apache. Apache è Sviluppato e gestito da Apache Software Foundation, ed è un software open source disponibile gratuitamente. Attualmente il 67% di tutti i server web del mondo utilizzano Apache. È un server web veloce e affidabile. Può soddisfare le esigenze di molti ambienti diversi e questo lo fa sfruttando le estensioni. Per installare Apache Server web è molto semplice. Ad ogni modo, di seguito, ti riporto i comandi necessari per installarlo sui vari sistemi operativi.

1.1 Installare il Server web Apache su Linux e MacOS

L’installazione del server Apache su Linux e MacOS è veramente un gioco da ragazzi. Infatti, basta aprire il terminale e digitare questo comando:

sudo apt install apache2

Da questo momento in avanti per avviare il server web, ed eventualmente riavviarlo se hai apportato delle modifiche al suo file di configurazione, sempre da terminale devi digitare ed eseguire questi due comandi:

sudo systemctl start apache2

oppure

sudo systemctl restart apache2

1.2 Installare il Server web Apache su Windows

Per installare un server web Apache su Windows devi cliccare su questo link, e proseguire scaricando e installando un pacchetto open source chiamato XAMPP. Anche la procedura è semplicissima, infatti, non devi fare altro che scaricare la versione a 64 o a 32 bit adatta al tuo sistema operativo e proseguire seguendo le operazioni proposte dal wizard di installazione.

download xampp server

Ora, che hai un server web perfettamente funzionante, puoi proseguire con l’installazione di Zend Framework. In questa guida, imparerai diverse tecniche per dare una struttura solida ed efficace al tuo software in PHP usando Zend Framework.

php zend framework home page

2. Come installare Zend Framework

Per installare Zend Framework è necessario installare prima Composer. Composer è un gestore automatico delle dipendenze. Prima di installare composer assicurati di aver installato PHP. L’installazione di composer può avvenire in vari modi a seconda del sistema operativo utilizzato. Di seguito i comandi necessari per installare composer su Linux, MacOS e windows:

2.1. Installare Composer su Linux o MacOS

Per installare Zend Framework è necessario installare prima Composer. Composer è semplicemente digitando il seguente comando da terminale:

curl –sS https://getcomposer.org /installer | php

Nel caso in cui il comando curl non sia disponibile, puoi utilizzare questo comando PHP alternativo:

php –r “readfile(‘https://getcomposer.org /installer’),” | php

Queste istruzioni scaricano e installano, composer, eseguendo le istruzioni contenute nel file composer.phar. Se volete rendere disponibile Composer a livello di sistema, e non solo nella directory corrente, puoi spostare il file composer.phar, scaricato precedentemente, nella directory /usr/local/bin:

sudo mv composer.phar /usr/local/bin/composer

Una volta installato Composer baserà tutto il suo funzionamento sul file composer.json, presente nella cartella del progetto software da gestire, è possibile eseguire l’installazione delle dipendenze con il seguente comando:

composer install

2.2. Installare Composer su Windows

Per installare Composer su Windows non devi fare altro che scaricare il pacchetto eseguibile cliccando su questo link e successivamente eseguirlo seguendo la procedura guidata proposta.

applicazione web con composer

2.3. Verifica installazione di Composer

Per verificare la corretta installazione di composer basta aprire il terminale o il command prompt e digitare il seguente comando:

composer- V

2.4. Installare Zend Framework

L’installazione di Zend richiede l’esecuzione di un singolo comando da terminale o da prompt dei comandi. Il comando in questione è:

composer require zendframework/zendframework

Questo comando installerà tutti i 61 pacchetti richiesti aggiornando il file composer.json. In alternativa, tutti i pacchetti Zend Framework possono essere installati singolarmente; ad esempio, se hai bisogno solo del pacchetto MVC, puoi installarlo con il seguente comando:

composer require zendframework/zend-mvc

Ora, hai tutto quello che ti serve per creare il tuo primo progetto web con PHP e Zend Framework.


LEGGI ANCHE : Bower: Un gestore di pacchetti per lo sviluppo web professionale


3. Come creare un progetto con Zend Framework e PHP

Adesso, devi creare la cartella che conterrà tutto il tuo progetto web sotto la root del server web. Quindi, localizza la cartella htdocs o www. Che per WAMP in Windows è sotto questo percorso C:\wamp\bin\apache\apachex.x.x\, mentre, per Linux e MacOS è sotto /var/www. Ora, crea una cartella sotto htdocs o www e posizionati al suo interno. Ok, ci siamo, digita questo comando:

composer create-project zendframework/zend-expressive-skeleton

Dopo aver digitato questo comando compariranno sullo schermo una serie di opzioni da selezionare per personalizzare il tuo progetto web con Zend. Qui, scegli Plates, come template engine, FastRoute, come sistema di routing, e Woops, per il debugging dell’spplicazione. Ad ogni modo, leggile attentamente e seleziona solo le voci che ti interessano. Una volta terminato il processo di installazione sarà possibile visionare l’applicazione di esempio digitando il seguente comando:

composer create-project zendframework/zend-expressive-skeleton

Aprendo un browser all’indirizzo http://localhost:8080, ti sarà possibile visualizzare l’home page della tua prima applicazione web creata con Zend Framework, come in figura.

applicazione web di esempio con zend framework


4. Hello World con Zend Framework

Il paradigma MVC, utilizza un sistema molto particolare basato sugli URL. Infatti, nella URL di un’applicazione web MVC, sono contenute tutte le indicazioni per capire quale azione eseguire (metodo della classe Zend_Controller_Action) e in quale controller si trova. Ad esempio, la URL, http://antonio.lamorgese.it/controller1/action1/, esegue la action1 del controller1. Quindi, un URL, contiene: il controller, l’azione, o il metodo del controller, ed eventuali parametri da passare all’azione se previsti.

Ora, mettiti comodo e iniziamo a creare una tua prima web application con Zend Framework. Quindi, apri il terminale ed entra nella directory in cui vuoi creare il progetto, a questo punto digita: 

composer create-project zendframework/skeleton-application helloWorldTest 

Come anticipato precedentemente, durante la fase di creazione del progetto, ti verrà chiesto se desideri un’installazione minimale. Rispondi “Sì” per il momento, tanto è solo una applicazione di test. Per semplicità e per gli scopi di questa guida, userò il server PHP CLI integrato. Cioè, PHP a partire dalla versione 5.4 possiede un web server integrato che puoi avviare direttamente da riga di comando. Essendo un server web capace di gestire una sola richiesta per volta. Per questo e per tante altre limitazioni, non è assolutamente adatto come web server per sistemi di produzione. Per avviare il PHP Web Server, sempre da terminale, spostati nella directory principale del tuo progetto (helloWorldTest), e digita ed esegui: 

php -S 127.0.0.1:8080

In questo modo PHP eseguirà il web server rimanendo in attesa di chiamate HTTP sull’indirizzo localhost (127.0.0.1) sulla porta 8080. Per interrompere l’esecuzione del web server è necessario premere la combinazione di tasti Ctrl-C. Aprendo un browser all’indirizzo http://localhost:8080/ potrai eseguire qualunque script PHP presente nella cartella di esecuzione del server web di PHP.

Ma torniamo a Zend framework, apri il tuo browser web e digita nella barra degli indirizzi questo URL http://localhost:8080/, dovresti vedere la pagina di benvenuto dell’applicazione Zend Framework Skeleton.

Adesso, proveremo a creare una nuova pagina web richiamata da una nuova action. Il file module.config.php presente nella cartella module/Application/config/ contiene le impostazioni per la tua web application:

return [
    'router' => [
        'routes' => [
            'home' => [
                ...
            ],
            'application' => [
                'type'    => Segment::class,
                'options' => [
                    'route'    => '/application[/:action]',
                    'defaults' => [
                        'controller'    => Controller\IndexController::class,
                        'action'        => 'index',
                    ],
                ],
            ],
        ],
    ],

Puoi notare come, all’interno del file module.config.php, sono contenute tutte le rotte associate al controller e alle azioni. Ma avrai notato anche che è stata creata una rotta di default e di conseguenza richiamando l’URL  http://localhost:8080/application/ viene richiamato il controller IndexController e l’azione indexAction.

A questo punto devi creare un’altra action all’interno di IndexController. La Action desiderata per stampare a schermo Hello World la chiamerai HelloWorldAction.

class IndexController extends AbstractActionController
{
    public function indexAction()
    {
        ...
    }
    
    public function helloWorldAction()
    {
        return new ViewModel();
    }
}

A questo punto non ti resta che creare la pagina web che visualizzerà il saluto Hello World. Quindi, vai in module/Application/view/application/index/ e crea il file hello-world.phtml con il seguente contenuto:

<?php
   echo "Hello World !";

Nota che il tag di chiusura di PHP, a fine file, è stato omesso. Questo perché spesso e volentieri questo tag produce il classico errore “Header already sent”, per cui, è consigliato ometterlo ed inserire al suo posto qualche riga di commento. A tal proposito ti consiglio di leggere la mia guida su “Come Programmare in PHP evitando 3 errori molto comuni ma fatali”.

Dopo questa breve divagazione torniamo al nostro esempio pratico sull’uso di Zend Framework. Quindi, apri il tuo browser web e vai a questo indirizzo: http://localhost:8080/application/hello-world. La tua prima web application con Zend è terminata, adesso, se sei interessato a capire più nel dettaglio come creare il tuo primo controller e destreggiarti tra i vari componenti di Zend Framework, puoi seguire questo preziosissimo video tutorial.

Tutorial su Zend Framework

Antonio Lamorgese

Amministratore di rete e sviluppatore. Dopo anni di esperienza nel settore, ho ideato un sistema di gestione dati MYSQL in PHP senza scrivere una sola riga di codice. Scopri di più....