martedì 10 luglio 2012

PHP & NetBeans: Template di codice in NetBeans per PHP


I template di codice sono frammenti di codice precedentemente scritti, forniti dall'IDE. puoi incollare un frammento nel tuo codice utilizzando code completion o l'abbreviazione del template seguita dal tasto Tab. Puoi anche racchiudere il tuo codice con un appropriato frammento PHP. Infine, puoi definire i tuoi template. Questo tutorial mostra come utilizzare i template e suggerisce utili casi per la definizione dei propri.

Contenuti
Content on this page applies to NetBeans IDE 6.9-7.0
  • Template di Codice PHP Definiti
  • Utilizzare i Template di Codice PHP
    • Espandere il template utilizzando l'abbreviazione + Tab
    • Inserire il template con code completion 
    • Incorporare il codice in un template 
    • Editare i parametri nei template espansi
  • Sintassi dei Template di Codice PHP 
    • Nome del segnaposto 
    • Nomi riservati 
    • Parametro definito da suggerimento 
  • Creare i Propri Template 
    • Caso d'uso: Inserire PHP in HTML 
    • Caso d'uso: Joomla 
    • Caso d'uso: Connessione a MySQL
    • Caso d'uso: Action nel controller di Zend 
    • Caso d'uso: Elemento modulo di Zend 
Per completare questo tutotial, hai bisogno del software e delle risorse seguenti.
Software o RisorseVersione Richiesta
NetBeans IDEscarica il pacchetto per PHP
Java Development Kit (JDK)5 o 6

Template di Codice PHP Definiti

Per visualizzare i template di codice che sono definiti in NetBeans, apri Tools > Options (NetBeans > Preferences su Mac), seleziona le caratteristiche dell'Editor, e seleziona la scheda Code Templates. Per vedere i template di codice PHP, seleziona PHP nell'elenco a discesa di Language. Appare la tavola dei template con i testi abbreviati ed espansi. Se selezioni un template nella tavola, il suo testo espanso appare nella scheda Expanded Text.
PHP code templates in the Options window, with the cli template selected
In questa immagine è selezionato il template di codice per la nuova classe (cls), e nella scheda Expanded Text puoi vedere come appare il template quando è espanso. Nella prossima sezione, utilizzerai la funzione Tab per espandere questo template nel tuo codice.
Nota: La sintassi del template di codice per la nuova classe (cls) è spiegata nella sezione "Sintassi dei Template di Codice".

Utilizzare i Template di Codice PHP

Ci sono tre modi per inserire i template nel tuo codice PHP. Ogni modo di inserimento dei template è utile in differenti situazioni. I tre modi per inserire i template sono:
  • Espandere il template utilizzando l'abbreviazione del templare seguita dal tasto Tab (o un differente tasto o combinazione di tasti da te definita).
  • Inserire il template espanso utilizzando code completion.
  • Incorporare il tuo codice nel template, utilizzando i suggerimenti a margine o Alt-Enter.
Dopo aver inserito il template, l'IDE ti aiuto ad editare i parametri nel template espanso.

Espandere il template di codice utilizzando l'abbreviazione + Tab

Osserva ancora la scheda Code Templates nella finestra di dialogo Opzioni. In basso c'è un campo a discesa denominato Expand Template on, per la selezione della combinazione di tasti. Questa è la combinazione di tasti da premere dopo la digitazione dell'abbreviazione del template di codice al fine di espandere il template. Di default è selezionato il tasto Tab, ma puoi selezionare altre combinazioni.
Expand Template On drop-down box
Il resto di questa sezione suppone che tu abbia il tasto di default, Tab, selezionato nel campo Expand Template on.
Quando l'abbreviazione per un template è parte di una parola chiave per code completion, potrebbe essere difficile espandere l'abbreviazione. In questo caso è più semplice utilizzare code completion per inserire il template.
Per espandere il teplate di codce per la nuova classe utilizzando la sua abbreviazione + Tab:
  1. Creare un file PHP vuoto.
  2. Nel blocco PHP di quel file, digitare cls e premete Tab. Il tmplate cls si espande.
    Attenzione: Digitare correttamente l'abbreviazione! L'espansione non ha luogo se l'abbreviazione è scritta male.
    Expanding a code template
  3. Il segnaposto per il nome della classe (class_name) è automaticamente selezionato. Puoi spostarti tra i segnaposto premendo Tab. Puoi immediatamente digitare il nome che vuoi per la classe e tale nome sovrascrive il segnaposto. Premi Enter quando hai fatto e l'IDE seleziona il nome della prima funzione, che in questo caso è il costruttore.
    Nota: I nomi dei segnaposti sono trattati dettagliatamente nella sezione "Nome del segnaposto".
    Constructor function name selected after class name edited
  4. Edita il nome della funzione o accetta quello proposto. Premi ancora Enter, e il cursore si sposta all'interno del corpo della funzione. In un scenario reale, potresti voler iniziare a scrivere il codice della funzione e il resto della classe.
    La posizione finale del cursore è determinata dal parametro ${cursor}. Questo parametro è descritto nella sezione "Nomi riservati".

Inserire il template con code completion

Per inserire un template utilizzando code completion, digita l'inizio del frammento espanso (non l'abbreviazione del template). Si apre la finestra di dialogo di code completion, mostrando il frammento.
Per inserire il template per la nuova classe utilizzando code completion:
  1. Nel blocco PHP di un file PHP, digita cla.
  2. Attendi che si apra la finestra di dialogo di code completion
  3. Individua il template per la nuova classe, che è elencato con la sua abbreviazione (cls). La cornice PHPDoc mostra il template espanso.
    Code completion dialog showing new class template
  4. Clicca il template per la nuova classe. L'IDE lo inserisce nel tuo codice.
  5. Il segnaposto per il nome della classe (class_name) è selezionato automaticamente. Puoi spostarti tra i segnaposti premendo Tab. Puoi immediatamente digitare il nome che desideri per la classe e questo nome sovrascriva il segnaposto. Premi Enter quando hai fatto e l'IDE seleziona il nome della prima funzione, che in questo caso è il costruttore.
    Constructor function name selected after class name edited
  6. Modifica il nome della funzione o accetta quello proposto. Premi ancora Enter, e il cursore si sposta all'interno del corpo della funzione. In uno scenario reale, potresti voler iniziare a scrivere il codice della funzione e il resto della classe.

Incorporare il codice in un template

Puoi incorporare il codice con i seguenti template PHP:
  • while
  • do
  • switch
  • if / elseif
  • try & catch
  • foreach
  • for
  • ob_start & ob_end_clean
In più, puoi creare nuovi template che possono incorporare del codice se il template include il suggerimento di parametro allowSurround.
Per incorporare il codice con un template, seleziona il codice e apri la finestra di dialogo Surround with.... Per aprire la finestra di dialogo Surround with..., premi Alt-Enter o clicca l'icona suggerimento Hint icon .
Per incorporare il codice con un template if(true):
  1. Crea un blocco PHP con la variabile $a = false e $b = 10.
    <?php
    $a = false;
            
    $b = 10;
    ?>
  2. Seleziona la linea $b = 10;
    Selected variable $b = 10
  3. Clicca l'icona suggerimento Hint icon o premi Alt-Enter. Si apre la finestra di dialogo Surrounf with....
    Open surround-with dialog
  4. Clic su Surround with if(true){...
    Surround-with dialog with Surround with if(true) selected
  5. L'IDE incorpora la linea $b = 10; in un template if(true){....
    Inserted if (true) template
L'IDE inserisce automaticamente come condizione dell'istruzione if la variabile più vicina e idonea che precede il punto d'inserimento del template. In questo caso, quella variabile è $a, perché è un booleana e l'istruzione if(true){} richiede una variabile booleana come propria condizione. In oltre, la condizione è automaticamente selezionata per la modifica, nel caso in cui la variabile inserita dall'IDE non sia quella corretta. Ciò significa che puoi iniziare a digitare immediatamente la variabile corretta dopo aver inserito il template. In tal caso code completion può aiutarti a selezionare la variabile corretta.
Nota: Il template if(true){} è descritto dettagliatamente nella sezione "Parametro definito da suggerimento".
Selecting the variable to use as a condition, from code completion
Premi Enter per uscire dalla condizione dell'istruzione. Il cursore si sposta alla locazione appropriata, che in questo caso è la fine della linea $b = 10;. Puoi modificare la condizione e premere Enter oppure accettare la condizione inserita automaticamente e premere Enter. In entrambi i casi il cursore esce dalla condizione e si sposta alla locazione appropriata.
Cursor after not editingCursor after editing
La sezione successiva contiene maggiori dettagli sulla modifica dei parametri nei template espnasi.

Editare i parametri nei template espansi

Nelle sezioni sull'inserimento dei template nel tuo codice, hai visto come l'IDE abbia automaticamente selezionato il nome della classe per la modifica quando hai espanso il template per la nuova classe, e come abbia automaticamente selezionato la condizione per la modifica quando hai espanso il template if(true). Ora vedrai qualche altro modo in cui l'IDE ti aiuta nel modificare i parametri nei template espansi.
Per modificare simultaneamente più istanze di un parametro:
  1. In un blocco PHP vuoto, digita for e premi Ctrl-Spazio per aprire code completion. Seleziona il template per l'iterazione (abbreviazione iter) e cliccalo. Una nuova iterazione è inserita nel tuo codice.
    Code completion showing iteration template selected
  2. L'iterazione ha due variabili come parametri, $index e $array. $index è automaticamente selezionata per la modifica. (Premendo Tab puoi spostarti tra i parametri.)
    Inserted iteration line with parameters, with $index parameter selected for editing
    Digita i. Tutte e tre le istanze di $index cambiano in $i.
    Inserted iteration line with parameter $index changed to $i
  3. Premi Enter o Tab. E' selezionato il parametro $array.
  4. Premi Enter. Il cursore si posiziona nel corpo dell'iterazione.
La caratteristica di refactory per i nomi delle variabili presente in NetBeans, permette di cambiare tutte le istanze del nome di una variabile modificando una sola istanza. Hai qui visto come può essere utile se applicato ai parametri dei template.
L'editor PHP di NetBeans aiuta anche nell'identificare il corretto metodo per le variabili.
Per associare una variabile in un template con il corretto metodo:
  1. In un blocco PHP vuoto, digitare il seguente codice:
    <?php
    
    $arr = array(new ArrayIterator($array()), new ArrayObject($array()));
    
    ?>
  2. Dopo la linea che dichiara l'array $arr, digita fore e utilizza code completion per inserire il template foreach (abbreviazione fore).
    Code completion for inserting the foreach template
  3. Metti il cursore nel corpo dell'istruzione foreach (puoi premere due volte Enter per spostare il cursore in quella posizione) e digita $value, o digita solo $ e seleziona $value da code completion.
    <?php
    
    $arr = array(new ArrayIterator($array()), new ArrayObject($array()));
    
    foreach ($arr as $value) {
        $value
    }
    
    ?>
  4. Dopo $value, digita ->. Code completion presenta i metodi corretti per la variabile $value, che è derivata dall'array $arr.
    Code completion for the $value variable, where $value is an Array Iterator method

Sintassi dei Template di Codice PHP

L'IDE di NetBeans fornisce i tempalte per tutti i linguaggi supportati. Qualche sintassi è generica per tutti i linguaggi. Altre sintassi sono specifiche del linguaggio. In questa sezione, puoi vedere la sintassi dei template generali più importanti e la sintassi specifica dei template PHP.
Un template di codice PHP può contenere codice PHP e parametri del template. Un template PHP potrebbe essere formato da solo codice php, soli parametri, o entrambi.
La sintassi per un parametro del templare è il simbolo dollaro, $, seguito dalla definizione del parametro tra parentesi graffe {...}. All'interno di questa sintassi, i parametri assumono una di queste tre forme:
  • Un arbitrario nome segnaposto, come ${UnNome}
  • Un nome riservato che fornisce istruzioni di elaborazione all'IDE
  • Un nome di parametro descrittivo e un insieme di suggerimetni che definiscono il parametro
Le seguenti sezioni trattano ogni forma di parametro del template.
Nota: $$${VARIABLE...} A volte può capitare un template in cui la sintassi sembra essere tre simboli di dollaro seguito dalle parentesi graffe $$${...}. In questo caso, il template include una variabile e il suo nome. La sintassi contiene un escape del simbolo di dollaro, scritto come un doppio dollaro $$, seguiro da un parametro per il nome della variabile, ${VARIABLE...}. Per esempio, il codice del template catch ${Exception} $$${exc} è espanso come catch Exception $exc.
$$${VARIABLE...} Sometimes you see a PHP code template where the syntax seems to be three dollar signs followed by curly brackets $$${...}. In this case, the code template includes a variable and its name. The syntax here is an escaped dollar sign, written as a double dollar sign $$, followed by a parameter for the variable name, ${VARIABLE...}. For example, the code template catch ${Exception} $$${exc} is expanded ascatch Exception $exc.

Nome segnaposto


In questo semplice caso, un parametro di template è un arbitrario valore segnaposto. Quando il template è espanso, l'IDE seleziona questo nome segnaposto per la modifica.

Per esempio, considera il template per la nuova classe (cls) mostrato in questo tutorial nelal sezione Template PHP Definiti e Espandere il template di codice utilizzando l'abbreviazione + Tab. il testo espanso del template della nuova classe inizia con class ${className}. Qui, la parola class è codice PHP e ${className} è un parametro. Questo parametro è solo un segnaposto arbitrario per il nome della classe. Quando l'IDE espande il template, ${className} diviene class_name. L'IDE si aspetta che class_name sia solo un segnaposto e lo seleziona automaticamente per la modifica.
Expanding a code template

Nomi riservati

L'IDE riserva due nomi di parametri come istruzioni operative.
  • ${cursor} definisce la locazione del cursore al termine delle modifica di tutti i valori selezionati automaticamente nel template espanso.
  • ${selection} definisce una posizione per incollare il contenuto della selezione dell'editor. E' utilizzato dalle così dette "selection template" che appaiono come suggerimenti ogni volta che l'utente selezione il testo nell'editor. Se un template include ${selection}, di norma si riferisce alla stessa posizione di ${cursor}.
Per esempio, considera ancora il template per la nuova classe (cls) mostrato in questo tutorial nelle sezioni Template PHP Definiti e Espandere il template di codice utilizzando l'abbreviazione + Tab. Questi contiene due parametri segnaposto, ${ClassName} e ${__construct}. Nel corpo della funzione, ha il parametro ${cursor} e ${selection}.
class ${ClassName} {

    function ${__construct} {
        ${selection}${cursor}

    }

}
Dopo l'espansione del template, il segnaposto class_name è automaticamente selezionato (1). Clicca Enter, e il segnaposto __construct è selezionato automaticamente (2). Non ci sono altri valori da modificare. Clicca ancora enter. e il cursore si sposta alla posizione indicata da ${cursor} nel testo del template (3).
Three code snippets showing cursor position change from placeholder name to placeholder name to ${cursor} position

Parametri definiti da suggerimenti


I parametri sono costituiti da un nome arbitrario, descrittivo in maiuscolo e uno o più suggerimenti.
${PARAMETER_NAME hint1[=value] [hint2...hint n]}
Il nome non appare ovunque nel codice. Comunque, è utile se vuoi utilizzare il parametro più di una volta in un template. Devi solo definire il parametro la prima volta, e poi riferirti ad esso con il suo nome le volte successive. Per esempio, nel seguente template il parametro ${CONLINK} è definito solo la prima volta ma è presente con il suo nome altre due volte.
$$${CONLINK newVarName default="link"} = mysql_connect('localhost', 'mysql_user', 'mysql_password');  
if (!$$${CONLINK}) {
      die('Could not connect: ' . mysql_error());  
}  
echo 'Connected successfully';  
mysql_close($$${CONLINK});  
${cursor}  

I suggerimenti aiutano l'IDe a calcolare il valore del parametro in fase di espansione del template. Per esempio come nel template if(true), utilizzato in questo tutorial nella sezione "Incorporare il codice in un template". il testo di questo template è
if (${CONDITION variableFromPreviousAssignment instanceof="boolean" default="true"}) {
    ${selection}${cursor}
}
Osserva il parametro ${CONDITION variableFromPreviousAssignment instanceof="boolean" default="true"}. Questo parametro imposta la condizione dell'istruzione if. Perciò il parametro è chiamato CONDITION. Il primo suggerimento è variableFromPreviousAssignment e il secondo suggerimento è instanceof="boolean". Insieme, questi due suggerimenti dicono all'IDE di cercare la più vicina variabile boolean che sia assegnata nel codice che precede il punto d'inserimento del template. Il terzo suggerimento, default="true", imposta la condizione come "se è impostata a true la più vicina variabile booleana che precede il punto d'inserimento del template."
Per esempio, quando la linea $b = 10 nel seguente frammento di codice è incorporata dal template if(true) ...
Snippet $a = false $b = 10
... l'IDE cerca la più vicina variabile booleana assegnata, trovando $a, e genera una istruzione if con la condizione $a[=true]. La condizione è automaticamente selezionata per la modifica, così il programmatore può cambiare $a con un'altra variabile piuttosto che con !$a.
Expanded template if $a=true then $b=10, with condition $a=true selected for editing
La seguente tabella elenca i suggerimenti utilizzati dati template PHP e la loro descrizione.
HintDescription
newVarNameIl valore del parametro dovrebbe essere un nome di variabile non utilizzato. Di norma utilizzato con default.
default=""Il valore di default del parametro.
instanceof=""Tipo di variabile PHP definita nel parametro.
variableFromPreviousAssignmentIl valore del parametro è la più vicina variabile precedentemente assegnata. Di norma utilizzato con istanceof e default.
variableFromNextAssignmentNameIl valore del parametro è la più vicina variabile successivamente assegnata. Di norma utilizzato con default.
variableFromNextAssignmentTypeIl valore del parametro è il tipo della più vicina variabile successivamente assegnata. Di norma utilizzato con defualt.
editable=falseIl valore del parametro non può essere modificato dopo l'espansione del template.
allowSurroundPermette al template di essere utilizzato per incorporare del codice.

Creare i Propri Template

In NetBeans puoi creare i tuoi template. In questa sezione è spiegato come creare i template, esplorare la loro sintassi, ed è suggerito qualche utile template da creare.
Per creare un template:
  1. Apri Tools > Options (NetBeans > Preferences on Mac), Seleziona le caratteristiche dell'Editor, e seleziona la scheda Code Templates.
    PHP code templates in the Options window, with the cli template selected
  2. Clicca il pulsante New, che è alla destra della tavola dei templates. Si apre la finestra di dialogo New Code Template. Digita l'abbreviazione che desideri per il template e clicca OK.
    New Code Template dialog asking for template abbreviation
  3. E' aggiunta una nuova riga alla tavola dei template. Questa riga contiene solo l'abbreviazione fornita. Il cursore è nella scheda Expanded Text, lì posto dall'IDE automaticamente. Puoi quindi iniziare a digitare il codice del template.
    Nota: Per apprender la sintassi dei template, vedi la sezione Sintassi dei Template di Codice PHP.
    Typing the expanded text of the new abb template
Le seguenti sezioni descrivono alcuni casi d'uso per la creazione dei propri template PHP. Se hai ulteriori casi d'uso da suggerire, condividili con la comunità su PHP Users' Forum.

Caso d'uso: inserire PHP in HTML

Se inserisci frequentemente dei frammenti PHP in blocchi HTML, puoi creare un template HTML che inserisce il PHP senza dover digitare <?php ?> ancora e ancora.
Il seguente template inserisce una istruzione echo di PHP nel codice HTML
Language:HTML
Abbreviation:php
Expanded text:
<?php echo ${cursor}   ?>
Options window showing new php in html template

Caso d'uso: Joomla

I template possono aiutarti ad utilizzare i framework PHP nell'IDE di NetBeans, specialmente framework che non hanno supporto nell'IDE. Ecco un templare che un utente ha sviluppato per essere utilizzato in Joomla.
Language:PHP
Abbreviation:joomdef
Expanded text:
defined('_JEXEC')
    or die('Restricted access');
${cursor}  
Options dialog with new joomdef code template

Caso d'uso: Connessione MySQL

Gli sviluppatori PHP hanno spesso bisogno di creare una connessione a un database MySQL. Questo template ne crea una per te. La variabile assegnata alla connessione MySQL ha come segnaposto link. Nota l'uso del triplo simbolo di dollaro $$$ - in realtà un doppio simbolo che produce un dollaro quando espanso, seguito dal parametro per il nome della variabile.
Language:PHP
Abbreviation:my_con
Expanded text:
$$${CONLINK newVarName default="link"} = mysql_connect('localhost', 'mysql_user', 'mysql_password');  
if (!$$${CONLINK}) {
      die('Could not connect: ' . mysql_error());  
}  
echo 'Connected successfully';  
mysql_close($$${CONLINK});  
${cursor}  
New code template for MySQL connection

Caso d'uso: Action nel controller Zend 


Invece di utilizzare la procedura guidata di NetBeans per la creazione di una action, puoi utilizzare un template per inserire una action in un controller del Framework Zend, come indexController{}.
Language:PHP
Abbreviation:zf_act
Expanded text:
public function ${functionName}Action () {
      ${selection}${cursor}  
}  
New Zend action code template

Caso d'uso: Elemento di modulo Zend

Questo template inserisce un elemento in un modulo Zend. Utilizzalo dopo aver generato un modulo invocando il comando create form <name>.
Language:PHP
Abbreviation:zf_element
Expanded text:
$$${ELEMENT newVarName default="element"} = new Zend_Form_Element_Submit('submit', array('label' => 'Send data to server'));  
$$this->addElement($$${ELEMENT});  
${cursor}  
New code template for Zend Framework elements to insert in ZF forms