/ //

Distribuire applicazioni PHP con PHAR - GM Multimedia

Vai ai contenuti

Menu principale:

Distribuire applicazioni PHP con PHAR

Guida PHP



Distribuire applicazioni PHP con PHAR
         A differenza di altri linguaggi di programmazione (come ad esempio Java), PHP non mette a disposizione un solo file eseguibile per il rilascio di un'applicazione. Per ovviare a questo problema ci viene incontro la libreria PHAR (“PHp ARchive”) con cui possiamo generare un pacchetto del nostro progetto da distribuire.
         Un altro utilizzo molto comune della libreria è il rilascio di applicazioni da riga di comando. Se avete già avuto modo di utilizzare la libreria Composer, questo è un esempio di applicazione sviluppata in PHP e rilasciata utilizzando la libreria PHAR.
         Prima di entrare nel dettaglio del suo utilizzo dobbiamo assicurarci che la configurazione del nostro ambiente PHP ci consenta di creare archivi PHAR. Dalla nostra console lanciamo il comando:
				php -i | grep "phar.readonly"
				phar.readonly => On => On
         Nel caso in cui il risultato sia simile al precedente, dobbiamo aprire il php.ini e impostare il valore di phar.readonly a 0. Questo consentirà non solo di leggere i file PHAR ma anche di crearne di nuovi.


Struttura di un archivio PHAR
         Iniziamo a creare la struttura della nostra applicazione. Dapprima creiamo due directory:
				dist/ #conterrà l'eseguibile generato dal PHAR
				src/ #conterrà i file sorgenti della nostra applicazione
         All'interno della directory src iniziamo ad inserire un file index.php che rappresenterà il punto d'ingresso dell’applicazione.
				<?php
				#src/index.php
				require_once "phar://exampleapp.phar/example.php";
         Come possiamo notare viene richiesto un file example.php contenuto all'interno di un file PHAR. Creiamolo inserendo del codice d'esempio così da simulare una qualsiasi applicazione.
				<?php
				#src/example.php
				echo "Questa è la mia applicazione compressa con PHAR\n";


Generare un file PHAR
         Una volta completato il codice necessario al nostro progetto possiamo dedicarci alla creazione del pacchetto. Nella root del progetto creiamo un nuovo file che utilizzeremo per generare il PHAR:
				<?php
				#generate-phar.php
				$sourceDirectory = './src';
				$buildDirectory = './dist';;
				$phar = new Phar(
				    $buildDirectory . "/exampleapp.phar",
				    FilesystemIterator::CURRENT_AS_FILEINFO | FilesystemIterator::KEY_AS_FILENAME,
				    "exampleapp.phar"
				);
				$phar["index.php"] = file_get_contents($sourceDirectory . "/index.php");
				$phar["example.php"] = file_get_contents($sourceDirectory . "/example.php");
				$phar->setStub($phar->createDefaultStub("index.php"));
         Analizziamo il codice appena scritto. Dopo aver definito le directory con i sorgenti e quella in cui salveremo il pacchetto, abbiamo creato un oggetto Phar. I parametri passati sono tre:
  • path del file PHAR da generare;
  • flag che indica come verranno gestiti i file. L'oggetto Phar estende la classe RecursiveDirectoryIterator che necessita di tale valore, nell’esempio abbiamo utilizzato il default della sua classe "genitore"
  • l'alias per riferirci alla nostra applicazione. E' il valore che abbiamo indicato all'interno del require inserito nel file index.php: "phar://exampleapp.phar/example.php".
         Per eventuali dubbi sugli oggetti con PHP fare riferimento alla guida PHP OOP.
         Ora che abbiamo definito il nostro oggetto possiamo includere il contenuto dei file necessari al progetto:
				$phar["index.php"] = file_get_contents($sourceDirectory . "/index.php");
				$phar["example.php"] = file_get_contents($sourceDirectory . "/example.php");
         A questo punto possiamo settare lo Stub, cioè il file di ingresso dell’applicazione.
				$phar->setStub($phar->createDefaultStub("index.php"));
         Dalla console andiamo quindi a creare il file PHAR:
				php generate-phar.php
         Verifichiamo che esista un file exampleapp.phar nella cartella dist. Possiamo lanciare il phar sempre da riga di
				php dist/exampleapp.phar
il cui output dovrebbe essere:
				Questa è la mia applicazione compressa con PHAR


Eseguire PHAR da Web server
         Oltre che da riga di comando possiamo eseguire PHAR direttamente all'interno di un Web server. Copiamo quindi il pacchetto all'interno del nostro Web server e creiamo un nuovo file che fungerà da punto d'ingresso (es. index.php):
				<?php
				require "exampleapp.phar";
         A questo punto aprendo il file da browser (es http://localhost/index.php) otterremo la stessa stringa ottenuta da riga di comando:
				Questa è la mia applicazione compressa con PHAR


Codice completo
Il codice completo dell'esempio è disponibile per il per il Download pronto per l’uso.
Visitatori online:
Sei il nostro visitatore n°:
© - Copyright 2015. - Tutti i diritti riservati - G.M. Multimedia
Torna ai contenuti | Torna al menu