22. July 2013 · 10 comments · Categories: Php, Zend Framework 2 · Tags:

In questo articolo, primo di una lunga serie di articoli su ZF2, vedremo come installare Zend Framework 2 utilizzando zftool.phar tramite command line interface (cli).

Alcuni percorsi e software specificati nell’articolo faranno riferimento ad una macchina Windows con Xampp installato.
Sarà inoltre necessario avere il comando php disponibile nel sistema.

La versione di ZF2 oggetto di questo articolo è la 2.2.1.

  1. Metodi di installazione
  2. Cos’è ZFTool
  3. Utilizzare ZFTool
  4. Creare un progetto ZF2 installando la skeleton application
  5. Creare un nuovo modulo all’interno di un’applicazione esistente
  6. Scaricare le dipendenze con composer
  7. I namespace
  8. I moduli

Metodi di installazione

Esistono tre differenti modalità per installare ZF2: da composer, manualmente o usando il pacchetto zftool.phar.

Di seguito vedremo l’ultima di queste opzioni in quanto è la più veloce e non necessità di configurazioni aggiuntive.
Scarichiamo quindi lo zftool.phar cliccando qui e salviamo il
file su C:\

Per approfondimenti sulle altre modalità vedere la documentazione ufficiale.


Cos’è ZFTool

ZfTool è un tool da linea di comando che ci permette di:

  • Creare un progetto ZF2 installando la skeleton application
  • Creare un nuovo modulo all’interno di un’applicazione esistente
  • Recuperare la lista di moduli installati nell’applicazione
  • Recuperare il file di configurazione dell’applicazione
  • Installare la libreria ZF2 specificando una versione

I comandi principali sono i primi 2, per dettagli sugli altri comandi vi consiglio questo tutorial.


Utilizzare ZFTool

Apriamo la console di Windows cliccando su start, digitando cmd nel campo di testo e cliccando invio. Nella console scriviamo il seguente comando per spostarci su C:/

  cd C:/

Quindi per visualizzare tutti i comandi disponibili digitiamo

  php zftool.phar

Se tutto sta funzionando dovreste poter vedere la seguente schermata:


Creare un progetto ZF2 installando la skeleton application

Per creare un nuovo progetto eseguite il seguente comando, modificando il percorso in base alle proprie esigenze

  php zftool.phar create project C:/

Una volta creato il progetto potete spostare il file zftool.phar all’interno della root della vostra applicazione.


Creare un nuovo modulo all’interno di un’applicazione esistente

Per creare un nuovo modulo all’interno della propria applicazione

  php zftool.phar create module MyNewModule 

Scaricare le dipendenze con composer

Il nuovo progetto creato conterrà nella root i file composer.json e composer.phar: questi serviranno per installare le dipendenze
dell’applicazione, che per ora è solamente la libreria ZF2 (come specificato in composer.json)

In console quindi lanciamo i seguenti comandi:

  php composer.phar selfupdate // per aggiornare composer
  
  php composer.phar install


I namespace

I namespace non sono un argomento legato al framework ZF2 ma piuttosto al linguaggio Php. Introdotti nel linguaggio nel 2009 dalla versione 5.3 il loro principale obiettivo è evitare la collisione di nomi tra classi, in quanto non può esserci nessuna garanzia che una libraria non contenga uno stesso nome classe di un’altra.
Questo problema in ZF1 era risolto nominando le classi in maniera verbosa, utilizzando nomi tipo “Zend_Db_Adapter_Pdo_Ibm_Db2″. Con l’utilizzo dei namespace una classe del genere potrebbe tranquillamente essere nominata “Db2″ con namespace Zend\Db\Adapter\Pdo\Ibm senza la preoccupazione che in una libreria di terze parti esista un’altra classe Db2, in quanto avrà un namespace differente.

I namespace introducono inoltre il comando “use”, utile per importare librerie di altri moduli, con la possibiliotà di assegnazione di un alias in caso di
collisioni di nomi o per semplificare i nomi.

Per ulteriori in formazioni leggere la documentazione ufficiale

.


I moduli

Zend Framework 2 offre un nuovo concetto di “modulo” rispetto alla prima release del framework, che in realtà non possedeva una vera e propria gestione per i moduli. In ZF2 un modulo può essere una libreria o un agglomerato di librerie, una singola funzionalità che viene eseguita ad ogni richiesta o al trigger di un determinato evento ( quello che in passato chiamavamo controller plugin ), view scripts, assets o qualsiasi cosa possa venirci in mente.

La gestione dei moduli è stata realizzata in modo tale che un modulo sia portabile e riutilizzabile in altre applicazioni semplicemente registrandolo tra
i moduli dell’applicazione. I moduli possono essere estesi da altri moduli, il modulo che estende avrà quindi come dipendenza il modulo esteso per funzionare. Inoltre un modulo può essere configurabile tramite un file di configurazione esterno da inserire nella directory autoload.

Il nome di un modulo coincide con il nome del namespace che sarà utilizzato al suo interno, per ulteriori info vedere la documentazione ufficiale


Si conclude qui questo articolo, prossimamente vedremo il Service Manager, Doctrine 2 e vari altri componenti/moduli.

Dubbi o domande? Commentate!


Aggiornamento del 24/07/2013

Pare che lo zftool del sito della zend sia momentaneamente corrotto, ho creato un mirror di una versione funzionate che potete scaricare cliccando qui. Sarà necessario 7zip per l’estrazione del file.


1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

10 Comments

  1. Prima di tutto grazie per l’articolo… e speriamo x quelli futuri.
    Ad oggi Win + XAMPP reppresenta proprio il mio abiente di sviluppo. Finalmente qualcuno che lo usa!!!!!
    Per me sarebbe fondamentale avere una risorsa italiana su ZF2 quindi un grosso incoraggiamento ad andare avanti.

    Ma veniamo al punto avevo già provato con scarso successo l’utilizzo di zftool.. vediamo se a questo giro risolvo:
    C:\Users\Simone>php zftool.phar
    Could not open input file: zftool.phar

    domani provo a fare pulizia e reinstallare xampp, intanto te hai qualke idea?

    grazie ancora

    • Prova a scaricare Git per Windows ed utilizzare la sua console http://git-scm.com/downloads . Fammi sapere com’è andata! Ciao

      • Fatto pulizia… reinstallato xampp.
        ora sia su prompt sia su console git mi dà questo errore:
        Fatal error: Class ‘Zend\Form\FormAbstractServiceFactory’ not found in phar://C:/zftool.phar/vendor/zendframework/zend-servicemanager/Zend/ServiceManager/ServiceManager.php on line 2

        questo zftool non ne vuole proprio sapere di funzionare!!!!!

        • Ciao,
          oggi ho provato a riscaricare zftool dal link fornito nell’articolo, che è direttamente quello fornito Zend ed o notato che oggi zftool sembra essere corrotto ( poco più di un 1mb contro gli oltre 2mb della versione funzionate ).

          Probabilmente lo risolveranno a breve.

          Ho aggiornato l’articolo inserendo una versione funzionante di zftool, scaricalo, estrailo e fammi sapere!

          Ciao

  2. Ciao GRAZIE x il tutorial!
    Ho uno strano problema però. Se eseguo lo ztool per creare il progetto, questo funziona alla perfezione. Poi copio il file ztool nella cartella di root del progetto. Poi se desidero creare un modulo all’interno della cartella del progetto mi viene generato errore:
    php zftool.phar create module MyMod
    PHP Fatal error: Uncaught exception ‘Zend\ModuleManager\Exception\RuntimeException’ with message ‘Module (ZFTool) could not be initialized.’ in /var/www/zf2/vendor/zendframework/zendframework/library/Zend/ModuleManager/ModuleManager.php:175
    Stack trace:
    #0 /var/www/zf2/vendor/zendframework/zendframework/library/Zend/ModuleManager/ModuleManager.php(149): Zend\ModuleManager\ModuleManager->loadModuleByName(Object(Zend\ModuleManager\ModuleEvent))
    #1 /var/www/zf2/vendor/zendframework/zendframework/library/Zend/ModuleManager/ModuleManager.php(90): Zend\ModuleManager\ModuleManager->loadModule(‘ZFTool’)
    #2 [internal function]: Zend\ModuleManager\ModuleManager->onLoadModules(Object(Zend\ModuleManager\ModuleEvent))
    #3 /var/www/zf2/vendor/zendframework/zendframework/library/Zend/EventManager/EventManager.php(468): call_user_func(Array, Object(Zend\ModuleManager\ModuleEvent))
    #4 /var/www/zf2/vendor/zendframework/ze in /var/www/zf2/vendor/zendframework/zendframework/library/Zend/ModuleManager/ModuleManager.php on line 175
    root@intranet2:/var/www/zf2# PHP Fatal error: Uncaught exception ‘Zend\ModuleManager\Exception\RuntimeException’ with message ‘Module (ZFTool) could not be initialized.’ in /var/www/zf2/vendor/zendframework/zendframework/library/Zend/ModuleManager/ModuleManager.php:175
    -bash: PHP: command not found

  3. Molto utile e sintetico! Grazie

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>