Add to Google Reader or Homepage

domenica 23 novembre 2008

Advertisement
Web agency
Realizzazione siti web


Menù

Home
Html & XHtml
Css
Javascript
Php
Motori di ricerca
Contatti

Login Form






Password dimenticata?
Nessun account? Registrati


Home arrow Php arrow Guida php arrow Le funzioni

Le funzioni Stampa E-mail
Scritto da Luciano viviani   

Funzioni definite dall'utente

Una funzione può essere definita usando la seguente sintassi:


function fun ($arg_1, $arg_2, ..., $arg_n)
{
echo "Funzione di esempio.\n";
return $retval;
}

All'interno di una funzione può apparire qualunque codice PHP valido, persino altre funzioni e definizioni di
classe.

Argomenti delle funzioni

L'informazione può essere passata alle funzioni tramite la lista degli argomenti, che sono liste di variabili e/o
costanti delimitati dalla virgola.
PHP supporta il passaggio di argomenti per valore (comportamento di default), il passaggio per riferimento,
e i valori di default degli argomenti. Le liste di argomenti di lunghezza variabile sono supportate solo in PHP 4 e successivi: vedere Liste di argomenti a lunghezza variabile e i riferimenti alle funzioni
func_num_args(), func_get_arg(), e func_get_args() per maggiori informazioni.

Costruire argomenti passati per riferimento
Di default, gli argomenti della funzione sono passati per valore (così se cambiate il valore dell'argomento
all'interno della funzione, esso non cambierà fuori della funzione). Se volete permettere ad una funzione di
modificare i suoi argomenti, dovete passarli per riferimento.
Se volete che una argomento sia passato sempre per riferimento ad una funzione, dovete anteporre una e
commerciale (&) al nome dell'argomento nella definizione della funzione:

function aggiungi_qualcosa(&$string)
{
$string .= 'e qualche altra cosa.';
}
$str = 'Questa è una stringa, ';
aggiungi_qualcosa($str);
echo $str; // l'output sarà 'Questa è una stringa, e qualche altra cosa.'

Valori predefiniti degli argomenti

Una funzione può definire valori predefiniti in stile C++ per argomenti scalari come segue:

function fare_il_caffe ($tipo = "cappuccino")
{
return "Sto facendo una tazza di $tipo.\n";
}
echo fare_il_caffe ();
echo fare_il_caffe ("espresso");

L'output dal frammento di sopra è:
Sto facendo una tazza di cappuccino.
Sto facendo una tazza di espresso.

Il valore predefinito deve essere un'espressione costante, non (per esempio) una variabile o un membro di
classe.
Da notare che quando vengono usati argomenti predefiniti, qualunque argomento predefinito dovrebbe essere
a destra degli argomenti non-predefiniti; diversamente, le cose non funzioneranno come ci si aspetti. Si
consideri il seguente frammento di codice:

function fare_lo_yogurt ($tipo = "yogurt", $gusto)
{
return "Fare una vaschetta di $tipo a $gusto.\n";
}
echo fare_lo_yogurt ("fragola"); // non funziona come si aspetta

L'output dell'esempio di sopra è:

Warning: Missing argument 2 in call to fare_lo_yogurt() in
/usr/local/etc/httpd/htdocs/php3test/functest.html on line 41

Ora, si confronti il codice di sopra con questo:

function fare_lo_yogurt ($gusto, $tipo = "yogurt")
{
return "Fare una vaschetta di $tipo a $gusto.\n";
}
echo fare_lo_yogurt ("fragola"); // funziona come si aspetta

L'output di questo esempio è: Fare una vaschetta di yogurt a fragola.

Liste di argomenti a lunghezza variabile

PHP 4 ha il supporto per le liste di argomenti a lunghezza variabile nelle funzioni definite dall'utente. Ciò è
abbastanza semplice, usando le funzioni func_num_args(), func_get_arg(), e
func_get_args().
Non è richiesta una speciale sintassi, e le liste di argomenti possono ancora essere provviste esplicitamente
con le definizioni di funzioni e si comporteranno normalmente.

Valori restituiti

I valori vengono restituiti usando l'istruzione opzionale return. Può essere restituito qualsiasi tipo, incluse
liste ed oggetti. Ciò provoca l'interruzione dell'esecuzione della funzione immediatamente e la restituzione
del controllo alla linea successiva a quella da cui è stata chiamata.

function quadrato ($num)
{
return $num * $num;
}
echo quadrato (4); // L'output è '16'.

Non possono essere restituiti valori multipli da una funzione, ma risultati simili possono essere ottenuti
restituendo un array

function numeri_piccoli()
{
return array (0, 1, 2);
}
list ($zero, $uno, $due) = numeri_piccoli();

Per restituire un riferimento da una funzione, è necessario usare l'operatore di passaggio per riferimento &
nella dichiarazione di funzione e quando viene assegnato il valore restituito ad una variabile:

function &restituisce_riferimento()
{
return $un_riferimento;
}
$nuovo_riferimento =& restituisce_riferimento();

Funzioni variabili

PHP supporta il concetto di funzioni variabili. Ciò significa che se un nome di variabile ha le parentesi
accodate ad esso, PHP cercherà una funzione con lo stesso nome del valore della variabile, e cercherà di
eseguirla. Tra le altre cose, ciò può essere usato per implementare delle callbacks, tabelle di funzioni e così
via.
Le funzioni variabili non funzionano con costrutti di linguaggio come echo(), unset(), isset(),
empty() e include(). Il costrutto print() è un'eccezione e funzionerà. Questa è una delle maggiori
differenze tra le funzioni PHP e i costrutti di linguaggio.

<?php
function foo()
{
echo "In foo()<br>\n";
}
function bar($arg = '')
{
echo "In bar(); l'argomento era '$arg'.<br>\n";
}
$func = 'foo';
$func();
$func = 'bar';
$func('test');
?>
 
< Prec.   Pros. >


Articoli correlati

Feed Rss


Corso PHP Completo
Corso completo per la creazione di siti Web dinamici. Corso con assistenza ed attestato finale!
Corso MySQL
Gestione del database open-source. Corso con assistenza ed attestato finale!