Archivi categoria: PHP

EGit – The current branch is not configured for pullNo value

Eclipse IDE
Eclipse IDE

Piccolo trucco per risolvere il seguente problema:

The current branch is not configured for pullNo value for key branch.master.merge found in configuration

Questo messaggio di errore si presenta quando, in EGit, il plugin di Eclipse per la gestione dei nostri repository GIT, il nostro branch master in locale non è impostato correttamente per tracciare il branch master in remoto. La soluzione è molto semplice, infatti è sufficiente seguire questi pochi passi:

  1. accedere al workspace con un qualsiasi file manager
  2. accedere alla directory principale del progetto
  3. accedere nella directory nascosta .git/
  4. editare il file config
  5. aggiungere al fondo del file config le seguenti righe:
[branch "master"]
        remote = origin
        merge = refs/heads/master

A questo punto sarà sufficiente lanciare un refresh ed eseguire nuovamente il pull, il problema sarà risolto!

Design Pattern: Model View Presenter (MVP) vs Model View Controller (MVC)

In rete si trova molta documentazione sui design pattern, sul loro utilizzo e sulla loro implementazione, ma non sempre il materiale a disposizione è accurato, chiaro e preciso. Ecco perchè volevo segnalare un interessante articolo che sebbene non sia proprio recentissimo (2007) tuttavia risulta scritto molto bene, chiaro, conciso ma allo stesso tempo completo.

L’articolo, sebbene si riferisca ad una specifica tecnologia (.NET), presenta interessanti spunti di riflessione, soprattutto sulle differenze rispetto ai due approcci Model View Presenter (MVP) e Model View Controller (MVC). Il diagramma di comparazione tra i due pattern aiuta molto a chiarire a colpo d’occhio la differenza di approccio tra le due soluzione, differenza in cui chiaramente la view gioca un ruolo fondamentale.
Continua a leggere

Zend Framework 2: i primi moduli a disposizione dei programmatori

Zend Framework
fonte: dal web

Da qualche giorno è disponibile un interessante articolo in cui vengono segnalati alcuni moduli Zend Framework 2 (ZF2) scaricabili e pronti per l’utilizzo.

Sebbene non siano ufficiali, i moduli presenti nella lista pubblicata permettono di iniziare a studiare ed entrare nella filosofia che sta portando all’implementazione della nuova piattaforma del noto framework PHP della Zend Inc., e rappresentano sicuramente un interessante punto di partenza per chi volesse iniziare ad approfondire l’argomento.

Anche se ancora non si conosce la data ufficiale del rilascio della prima release stabile, è già disponibile una versione beta del framework con la quale si possono iniziare a studiare i nuovi meccanismi e le modalità di integrazione con il codice preesistente, e questi moduli sono degli ottimi candidati per nostri primi esperimenti….dunque perchè aspettare? ;)

PHP – Metodi alternativi per il debug in PHP

PHP
fonte: dal web

Piccoli trucchi per chi non ha a disposizione un vero debugger come XDebug o Zend Debugger. In mancanza di un debugger degno di questo nome può essere difficoltoso, soprattutto in contesto PHP, trovare un bug o analizzare i dati contenuti nel flusso di elaborazione  per capire quale sia il problema o il motivo per cui si presenta un risultato che non ci aspettiamo.

In alcuni casi utilizzare la stampa a video dell’errore può non essere possibile o assolutamente da evitare, ad esempio nel caso in un contesto di produzione. In queste situazioni possiamo sfruttare un semplice sistema di logging, ovvero riportare in un file di testo gli errori generati dall’applicazione o altre informazioni importanti che chiaramente non vogliamo rendere pubbliche. Oltre alla stampa semplice dell’errore però, nella maggior parte dei casi, abbiamo anche bisogno di utilizzare le funzioni di ispezione come “var_dump” o “print_r” , che ci facilitano l’analisi. Il problema è che le informazioni restituite da queste funzioni sono strutturare in modo complesso, e dunque non è così immediata la stampa su file.

Per risolvere il problema possiamo utilizzare l’output buffering di PHP:

Continua a leggere

Zend Framework: le configurazioni per i principali Database Adapter

Zend Framework
fonte: dal web

Piccolo appunto da tenere sempre pronto per chi sviluppa con Zend Framework, il potente framework rilasciato dalla Zend Technologies. Zend Framework implementa i database Adapter per fornire un ulteriore livello di astrazione e facilitare così la connessione delle nostre applicazioni in PHP con diversi RDMBS.

L’implementazione vera e propria è data dalla classe Zend_Db_Adapter : esiste un Adapter per ogni RDMBS disponibile, e comunque il framework è predisposto per poter scrivere nuove implementazioni senza particolari problematiche. Nella pagina della documentazione relativa alla classe Zend_Db_Adapter è disponibile l’elenco degli Adapter che Zend_Db fornisce al driver PDO per accedere ai diversi RDMBS.

Continua a leggere

Zend Framework – Impostare la document root da .htaccess

Zend Framework
fonte: dal web

Questo è uno dei trucchetti che può davvero far comodo conoscere quando sviluppiamo web application con Zend Framework (ZF). Quando creiamo un progetto con ZF ci troviamo di fronte una struttura tipicamente simile alla seguente:

nome_preogetto/
   application/
      controllers/
      models/
      views/
         scripts/
   library/
   public/
   tests/

Continua a leggere

ExtJs – Integrazione tra PHP e ExtJS con JSON

PHPExtJs (oggi Sencha) è uno dei principali framework javascript attualmente disponibili: è potente, flessibile, cross-platform, ed è probabilmente uno degli strumenti più veloci per realizzare rich internet applications. In questo articolo vedremo i concetti principali che permettono di integrare ExtJs in una web application PHP-based attraverso il protocollo JSON.

Continua a leggere

Zend Framework – Accedere ai dati di configurazione dell’application.ini

Zend FrameworkProseguiamo lo studio di Zend Framework analizzando le diverse tecniche possibili per accedere ai dati di configurazione contenuti nel file application.ini . L’ application.ini è il file responsabile della configurazione della web application: in questo file sono contenute informazioni sensibili, come ad esempio le credenziali della base di dati, i percorsi delle directory principali, e molto altro ancora. Il file ha una struttura gerarchica che permette di utilizzare contemporaneamente più configurazioni diverse (es. “produzione”, “testing”, “develop”).

Continua a leggere

Zend Framework – “Could not determine temp directory, please specify a cache_dir manually”

Zend FrameworkIl messaggio di errore “Could not determine temp directory, please specify a cache_dir manually” viene restituito da Zend Framework quando non è impostata o non è possibile scrivere nella directory per il salvataggio dei dati temporanei. Questo provoca chiaramente l’immediato crash dell’applicativo.

Continua a leggere

Database – Come gestire le transazioni in Zend Framework

Zend Framework è uno tra i principali framework (se non il principale) per lo sviluppo di applicazioni enterprise in PHP. E’ uno strumento molto potente al servizio degli sviluppatori PHP: è estremamente flessibile, estendibile, facile da usare e decisamente manutenibile. Questo è il primo di una serie di articoli che sto preparando per presentare quelle che sono le caratteristiche più interessanti di questo prodotto.

L’argomento che trattiamo in questo articolo è la gestione delle transazioni con Zend Framework. Una transazione è una sequenza di operazioni che deve rispettare le proprietà ACID ( Atomicity, Consistency, Isolation, e DurabilityAtomicità, Coerenza, Isolamento e Durabilità). Una transazione può terminare con successo o con un insuccesso: nel primo caso il risultato sarà permamente, mentre nel caso di insuccesso di deve tornare alla situazione precedente l’inizio della transazione, come se nulla fosse successo.

Continua a leggere

PHP – Attivare il Code Assistant in Eclipse

Quando scriviamo il nostro codice è davvero comodo avere un assistente che ti suggerisce ad esempio i metodi che possiamo richiamare su un oggetto o le classi che abbiamo a disposizione per raggiungere il nostro obiettivo. Sono strumenti che quando inizi ad usare non puoi più farne a meno.

Il “Code Assistant” di Eclipse è uno strumento molto potente, che non solo suggerisce le librerie di default del linguaggio di programmazione con il quale stiamo lavorando (Java, PHP, ecc.) ma permette anche di personalizzare le librerie a disposizione, aggiungendone ad esempio di terze parti.

Questo non solo velocizza la scrittura del codice, ma permette anche di imparare molto più rapidamente il linguaggio o i framework che stiamo utilizzando nel nostro applicativo. Quando però lavoriamo in team su un progetto, è molto probabile che si utilizzino i plugin come quello di subversion per gestire il lavoro. Il problema è che quando lavoriamo in questo ambiente, di default, il progetto perde l’indicazione sulla sua stessa natura….in pratica Eclipse non sa più se stiamo lavorando in PHP o Java, sa solo che stiamo lavorando con subversion, perdendo in questo modo il prezioso aiuto che ci fornisce il Code Assistant. Ma per risolvere questo problema ci vogliono davvero 5 minuti…

Dobbiamo concentrare la nostra attenzione sui file “.buildpath” e “. project” del nostro progetto Eclipse: se li editiamo noteremo che non vi sono indicazioni circa la natura del progetto (cioè se siamo in ambiente Java, PHP o Javascript). Tutto ciò che dobbiamo fare è inserire nei rispettivi file le seguenti direttive in neretto:

.PROJECT

<?xml version=”1.0″ encoding=”UTF-8″?>
<projectDescription>
<name>prova</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.wst.validation.validationbuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.dltk.core.scriptbuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.php.core.PHPNature</nature>
</natures>
</projectDescription>

.BUILDPATH

<?xml version=”1.0″ encoding=”UTF-8″?>
<buildpath>
<buildpathentry kind=”con” path=”org.eclipse.php.core.LANGUAGE”/>
<buildpathentry external=”true” kind=”lib” path=”/myLibrary”/>
<buildpathentry kind=”src” path=””/>
</buildpath>

A questo punto, una volta riavviata l’IDE, il nostro progetto sarà etichettato in base alla sua natura, e dunque si riattiveranno tutte le funzionalità e tutti gli strumenti a disposizione per lo sviluppo con l’ambiente che abbiamo impostato (e il Code Assistant non fa eccezione! ;) )

ExtJs, inviare un array nelle chiamate Ajax

Le chiamate asincrone sono ormai un fondamento delle interfacce web, e praticamente tutti i principali framework javascript in circolazione forniscono degli strumenti embedded che semplificano lo sviluppo e automatizzano la maggior parte delle impostazioni.

ExtJs è un framework javascript che è riuscito ad ottenere forti consensi nell’ambito dello sviluppo di interfacce web: questo grazie soprattutto alla potenza del prodotto e alla comunità decisamente attiva che fornisce un importante supporto agli sviluppatori.

Il meccanismo implementato da questo  framework per eseguire chiamate Ajax è estremamente semplice ed intuitivo, meccanismo che tra le altre cose ricorda molto da vicino quello adottato da altri framework javascript come JQuery. Vediamone un esempio:

Ext.Ajax.request({
[…]
url: ‘pagina.php’,
params: {id: ‘3’},
success: function(resp) {
[…]
} ,
failure: function(a, b) {
[…]
}
});

Con queste poche righe di codice, ExtJs ci permette di eseguire una chiamata Ajax verso l’indirizzo specificato nel parametro di configurazione “url” (pagina.php) e di gestire sia il caso di risposta positiva sia il caso di insuccesso.
“params” invece permette di specificare i parametri che verranno inviati al file “pagina.php” durante la chiamata Ajax: nel nostro esempio inviamo un parametro con identificativo “id” che contiene il valore 3.

E se volessimo inviare un array? Nessun problema, ci viene in aiuto JSON.

ExtJs è chiaramente progettato per fornire pieno supporto a JSON, dunque possiamo sfruttare questo protocollo. Codifichiamo quindi il nostro array utilizzando le funzioni che ExtJs ci mette a disposizione, come ad esempio la seguente:

Ext.encode(array)

Supponendo quindi di voler inviare un array di valori con una chiamata Ajax il nostro codice potrebbe diventare:
Ext.Ajax.request({
[…]
url: ‘pagina.php’,
params: {data: Ext.encode(arrayData)},
success: function(resp) {
[…]
} ,
failure: function(a, b) {
[…]
}
});

Lato server, sarà sufficiente eseguire il decoding del parametro “data”, che giunge al server sottoforma di stringa JSON:

$myArray = json_decode($_POST[‘data’]);

ECLIPSE – Configurare il manuale di PHP in Eclipse

Eclipse è un IDE meravigioso: con un’architettura modulare ( a plugin ), con gli strumenti di debug e con una stabilità che suscita invidia….il tutto open source!!

Vi sono varie versione pre-configurate di Eclipse, in base alle esigenze dello sviluppatore: c’è la versione per gli sviluppatori J2EE, per applicazioni Java Mobile, per sviluppatori PHP, ecc.

Ma è anche possibile scaricarsi la versione base e scegliere “a mano” la configurazione che si preferisce, installando i plugin che necessitano allo sviluppatore.

Anche se Eclipse nasce principalmente per gli sviluppatori Java, negli ultimi anni sono state perfezionate versioni per i principali linguaggi web-side, come ad esempio PHP e Ruby. In questo articolo andremo a vedere come integrare il manuale PHP all’interno dell’IDE, in modo da avere a portata di click le principali librererie che questo linguaggio di programmazione mette a disposizione.

Di default, il PDT (PHP Development Tools ) di Eclipse segue il manuale online del famoso sito www.php.net: ovviamente questa è la scelta più comoda, visto che è sicuramente la documentazione più aggiornata di questo linguaggio. Il problema è che questa soluzione vale per un pc sempre connesso a Internet. Se abbiamo la necessità di lavorare sempre con la documentazione, anche quando non siamo connessi (e sarebbe un bene che tutti gli sviluppatori lo facessero), allora dobbiamo seguire questi semplici passi:

1) dal sito di riferimento www.php.net scarichiamo la versione html del manuale, situata al seguente indirizzo www.php.net/download-docs.php (nel caso il download sia congestionato, si può scaricare la documentazione anche dal mirror italiano, al seguente indirizzo)

2) Una volta scaricato e unzippato l’archivio, apriamo Eclipse (con il PDT già installato), andiamo su:

Window –> Preferences –> PHP —> PHP Manual

e creiamo un nuovo elemento cliccando sul tasto “New” e selezionando l’inserimento da cartella.

3) Ad inserimento effettuato, clicchiamo sul nuovo elemento e poi sul tasto “Default” se vogliamo che questa sia la versione di default del nostro manuale

A questo punto abbiamo finito: avremo a disposizione per il nostro sviluppo PHP il manuale e la documentazione vitale per ogni sviluppatore, sia che siamo connessi a Internet sia nel caso in cui ci troviamo a lavorare in assenza di connessione.