Manuale PHP
Indietro | Capitolo 17. Funzioni | Avanti

# Argomenti delle funzioni

L'informazione può essere passata alle funzioni tramite la lista degli argomenti, che sono liste di espressioni 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 varabile 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. Un effetto simile può essere ottenuto in PHP 3 passando una array di argomenti alla funzione.

Esempio 17-5. Passaggio di array a funzioni

`<?php function prende_array($input) { echo "$input[0] + $input[1] = ", $input[0]+$input[1]; } ?>`

## 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 un ampersand (&) al nome dell'argomento nella definizione della funzione:

Esempio 17-6. Passaggio di parametri per riferimento

`<?php 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:

Esempio 17-7. Utilizzo dei parametri default in una funzione

`<?php 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.

Anche il PHP permette di utilizzare matrici ed il tipo speciale NULL come valore di default, ad esempio:

Esempio 17-8. Utilizzo di tipi non scalari come valori di default

`<?php function makecoffee($types = array("cappuccino"), $coffeeMaker = NULL) { $device = is_null($coffeeMaker) ? "hands" : $coffeeMaker; return "Making a cup of ".join(", ", $types)." with $device.\n"; } echo makecoffee(); echo makecoffee(array("cappuccino", "lavazza"), "teapot"); ?>`

Il valore predefinito deve essere un'espressione costante, non (per esempio) una variabile, un membro di classe o una chiamata ad una funzione.

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:

Esempio 17-9. Utilizzo incorretto degli argomenti di default

`<?php 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
    Fare una vaschetta di fragola a.

Ora, si confronti il codice di sopra con questo:

Esempio 17-10. Utilizzo corretto degli argomenti di default

`<?php function fare_lo_yogurt($gusto, $tipo = "yogurt") { return "Fare una vaschetta di $tipo a $gusto.\n"; } echo fare_lo_yogurt("fragola");`

L'output di questo esempio è:

    Fare una vaschetta di yogurt a fragola.

> Nota: Dal PHP 5 i valori di default possono essere passati per riferimento.

## 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ò è realmente 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.

Indietro | Partenza | Avanti
Funzioni | Risali | Valori restituiti