PHP e FUNZIONI

Per creazione dinamica di pagine che si piegano e adattano alle esigenze dell’ utente poco servirebbe un linguaggio di programmazione che esegue solo istruzione procedurali, immaginiamo di dover scrivere 100 volte ciao pippo che faccio ribadisco per cento volte echo ciao con tutta la sintassi correlata per realizzare nella pratica quella istruzione nella pagina? Con il ceo di Umbriaway Consulting che non é Giacobbo ma Faraoni Enrico analizziamo in questo post le profonde implicazioni che la dicitura “controllare il flusso di esecuzione” apre con innumerevoli output. Una applicazione deve prendere delle decisioni per adattarsi alle necessità di calcolo, se quel flusso é vero dopo la condizione continua a eseguire il tuo output oppure se riscontri una condizione falsa esci dal ciclo. Certamente i cicli sono estremamente potenti in PHP ma procediamo per gradi. Se hai delle porzioni di calcolo indipendente da eseguire nella pagina puoi scrivere delle funzioni autonome che vengono richiamate tutte le volte che necessita per svolgere quel tipo di compito. Certamente le funzioni aiutano e migliorano la leggibilità organizzativa del codice, potremmo ad esempio includere un file con tutte le funzioni con la famosa require_once e quindi alleggerire anche il peso della pagina oltre che facilitare la maneggevolezza quando c’è da modificare qualcosa senza sovraccaricare la struttura della pagina portante. Le funzioni permettono di scomporre un problema attraverso la creazione di tanti sottoproblemi risolvibili autonomamente in modo da arrivare a un minimalismo funzionale scarnificato all’ osso a prova di errori. PHP supporta un numero elevato di funzioni ma sostanzialmente prima con la parola chiave FUNCTION si dà un NomeFunzione e poi tra parentesi si inseriscono eventuali argomenti prima di aprire il blocco di istruzioni con la graffa. Una funzione scomposta nella sua anatomia é riconoscibile perché ha quindi queste quattro parti ben distinte che sono appunto la parola chiave FUNCTION utilizzata per dire all’ analizzatore PHP che sta nascendo una funzione, il nome della funzione che deve rispettare determinate regole tipo non possono iniziare con caratteri speciali strani (solo il _ é consentito nel corpo ma non all’ inizio) e che non vuole numeri sempre all’ inizio, PHP vede le maiuscole come minuscole nel senso che qui non vi é una netta distinzione come nelle discussioni tra VARIABILI e COSTANTI. Dopodiché troviamo gli argomenti racchiusi tra parentesi tonde cioé quell’ elenco di valori che la funzione si attende di ricevere quando la funzione viene chiamata. Se la funzione non prevede l’uso di questi argomenti comunque richiede obbligatoriamente l’uso delle parentesi anche se vuote all’ interno; infine abbiamo il corpo della funzione tra parentesi graffe {} dove troviamo le dichiarazioni, le operazioni e i calcoli che la funzione deve supportare per finalizzare il suo lavoro e arrivare allo scopo prefisso per la quale é nata. Le funzioni possono essere definite in qualunque punto dello script e richiamate liberamente all’ interno dello script stesso. Nulla vieta che una funzione ne richiami un’altra. Le funzioni non vengono mai eseguite dove sono definite ma dove sono richiamate. Certamente é buona prassi definire le funzioni in punti organizzati del codice in genere nella sezione head del documento per esempio oppure con una inclusione di un file esterno. Per richiamre una funzione non bisogna fare altro che ricorrere al suo nome e inserire gli argomenti se ce ne sono. Ora preoccupaiamoci di creare una funzione definisce una stampa a video e successivamente definisce una dichiarazione di benvenuto richiamata dalla funzione precedente dove verranno inseriti gli argomenti nome persona e data come variabili, ma vediamo in concreto lo script in questione:

// definizione funzione stampa
<?
function Stampa($testo){
$testo=”<p><b>$testo</b></p>”;
echo $testo;
}

//definizione della funzione Welcome
function Benevenuto($nome_persona,$data){
$messaggio=”Ciao, $nome_persona!”;
$messaggio=$messaggio. ” la data odierna é $data”;

//richiamo la funzione stampa passando come argomento la variabile $messaggio
Stampa($messaggio);
}

?>

<html><head></head><body>

<?
$persona = “Mario”;
$giorno = “05/05/2005”;
//richiamo la funzione welcome passando i parametri di cui sopra
Benvenuto($persona, $giorno);
// la funzione viene usata con argomenti arbitrari
Benvenuto(“Luca”, “05/05/2005”);
?>
</body>
</html>

eccellenza-umbraLe variabili in php possono essere passate sia per valore che per riferimento. Per capire a fondo come sono gestite le funzioni é importante chiarire la differenza tra parametri formali e parametri reali. Nella definizione di una funzione gli argomenti vengono rappresentati da variabili che sono parametri formali, cioé dei segnaposto che consentono di operare con i valori effettivamente passati alla funzione nel momento in cui viene richiamata. Quando si richiama una funzione, le vengono passati dei parametri reali, cioé dei valori effettivi che nel corpo della funzione sono attribuiti a parametri formali utilizzati nella sua definizione. Nel richiamare una funzione é possibile passarle come argomenti non solo variabili o valori ma anche espressioni, ad esempio concatenando le lettere di Luca nell’ esempio di cui sopra con il punto . espressioni che prima di essere passate alla funzione vengono valutate e risolte e solo successivamente i loro valori verranno attribuiti ai parametri formali. Il fatto che ai prametri formali siano attribuiti dei valori ha una conseguenza molto importante: il codice interno a una funzione non può modificare il valore di una variabile passato come argomento alla funzione stessa. Infatti al parametro formale viene attribuita una copia del valore della variabile argomento e non la variabile stessa come vedremo nell’ esempio seguente:

 

Annunci

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google photo

Stai commentando usando il tuo account Google. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...