Corsi on-line
Chiudi
Newsletter:
  • Seguici su Facebook
  • Seguici su Twitter
  • Seguici su Google+
  • Seguici via RSS
  • Seguici col tuo Smartphone

Filtrare le proprietà della nostra applicazione in relazione all'ambiente

Articolo scritto da Riccardo Brambilla
Pagina 1 di 4

Iniziamo spiegando cosa intendiamo per filtering dinamico.
Con questa espressione ci riferiamo a quel meccanismo che permette di rendere disponibili alle nostre classi/script proprietà comuni filtrate però in relazione all'ambiente in cui stiamo lavorando (locale, test, produzione).

E' un meccanismo comune in Java ma non in PHP per il semplice motivo che il concetto di deploy, così come comunemente inteso, è poco associabile al nostro amato linguaggio. E' infatti piuttosto comune provare gli script in locale e poi copiare i files via ftp sulla macchina di test o (peggio) direttamente su quella di produzione.

(L'articolo continua più sotto...)

In ambiente professionale, tuttavia, è molto comodo avere proprietà filtrate automaticamente a seconda che la nostra applicazione debba girare in localhost o su altre macchine ( ad esempio quelle di frontend, esposte all'esterno), quindi in questo articolo creeremo una semplice infrastruttura per implementare questo tipo di logica all'interno di un nostro ipotetico progetto PHP.
Per fare ciò non utilizzeremo pacchetti esterni, né particolari astrazioni, ci basterà un xml, una classe PHP e dei file di testo.

L'idea è quella di definire nel file xml le nostre proprietà comuni, creare un file per ogni ambiente per valorizzarle e scrivere un pò di codice che mette insieme il tutto. La struttura della nostra applicazione di prova sarà questa:

  1. una cartella classes contenente la classe PropertyManager.class.php
  2. una cartella config con all'interno il file app_properties.xml e una cartella filters
  3. la cartella filters contenente tre file: local.filter.properties, test.filter.properties, pro.filter.properties
  4. un file PHP con il codice per testare il funzionamento della nostra soluzione: index.php

Ecco la struttura di base:

Struttura esempio filtering

L'xml

Vediamo come si compone il file:

<?xml version="1.0" encoding="utf-8" ?>
<properties>
  <property name="__app_version" value="0.0.1" />	
  <property name="messaggio_variabile" value="" />
  <property name="url_servizio_esterno" value="" />
  <property name="local" value="localhost" />
  <property name="test" value="test.qualchedominio.it" />
  <property name="pro" value="prod.qualchedominio.it" />
</properties>

Oltre al solito tag xml che inizia il documento definiamo un tag contenitore <properties> dentro il quale inseriamo una serie di tag <property>; i primi tre sono quelli che ci serviranno nell'esempio, gli ultimi tre sono riferiti ai vari host e serviranno a PHP per capire dinamicamente in quale ambiente stiamo operando.

Qui abbiamo deinito gli ambienti locale, test e produzione, ma nulla vieta di definirne altri, ad esempio dev. Per ognuno degli ambienti è indicato un URL di base, che valorizzeremo a seconda delle nostre esigenze, applicazione per applicazione.
Nel nostro scenario abbiamo una macchina di test raggiungibile all' URL test.qualchedominio.it e una di produzione raggiungibile all'indirizzo prod.qualchedominio.it oltre ovviamente a localhost.

I file .*properties

Il passo successivo è fare in modo che le properties definite nell'xml vengano valorizzate in maniera diversa a seconda dell' ambiente in cui ci troviamo. Ci serviamo a questo scopo di files di testo contenuti nella cartella filters, vediamone il contenuto ad uno ad uno:

local.filter.properties

; [ LOCAL ] Filter properties
messaggio_variabile="Siamo in LOCALE"
url_servizio_esterno=http://dev-servizio.esterno.it

test.filter.properties

; [ TEST ] Filter properties
messaggio_variabile="Siamo in TEST"
url_servizio_esterno=http://test-servizio.esterno.it

pro.filter.properties

; [ PRO ] Filter properties
messaggio_variabile="Siamo in PRODUZIONE"
url_servizio_esterno=http://prod-servizio.esterno.itit

Notate che la property "__app_version", definita nell'xml, non è ridefinita nei vari files, sarà infatti trattata a tutti gli effetti come una proprietà comune e immutabile tra i vari ambienti, quindi non verrà filtrata.

Corsi
Corso LinuxCorso Linux
Guida completa al sistema open-source. A partire da 39 €.
Corso MySQLCorso MySQL
Gestione del database open-source. A partire da 49 €.
Corso PHPCorso PHP
Corso completo per la creazione di siti Web dinamici. A partire da 49 €.
Vedi anche...
Annunci

Mr.Webmaster

Pubblicità
Chi Siamo
Contattaci
Collabora
Note Legali
© 2003 - 2012 Mr.Webmaster - Il portale dei Webmaster Italiani - Tutti i diritti riservati | Powered by IKIweb Internet Media S.r.l. - PIVA 02848390122