English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutorial di base PHP

Tutorial avanzato PHP

PHP & MySQL

Manuale di riferimento PHP

Funzioni PHP

In questo tutorial, imparerai come creare funzioni personalizzate in PHP.

Funzioni predefinite di PHP

Le funzioni sono blocchi di codice indipendenti che eseguono compiti specifici.

PHP ha una vasta raccolta di funzioni predefinite che puoi chiamare direttamente nei tuoi script PHP per eseguire compiti specifici, come: gettype(), print_r(), var_dump, ecc.

Vai alla sezione di riferimento PHP per ottenere una lista completa delle funzioni predefinite utili.

Funzioni definite dall'utente in PHP

Oltre alle funzioni predefinite, PHP ti permette di definire le tue funzioni. Questo è un metodo per creare pacchetti di codice riutilizzabili per eseguire compiti specifici, che possono essere salvati e mantenuti separatamente dal programma principale. Ecco alcuni vantaggi dell'uso delle funzioni:

  • Le funzioni riducono la ripetizione del codice nel programma - Le funzioni ti permettono di estrarre blocchi di codice comuni in un singolo componente. Ora, puoi chiamare questa funzione in qualsiasi posizione dello script per eseguire la stessa attività, senza dover copiare e incollare il blocco di codice identico più volte.

  • Le funzioni rendono la manutenzione del codice più facile - Poiché una funzione può essere utilizzata più volte, qualsiasi modifica effettuata all'interno della funzione viene automaticamente implementata in tutte le posizioni senza dover modificare più file.

  • Le funzioni permettono di eliminare gli errori più facilmente - Dividendo il programma in funzioni, se si verifica un errore, si sa esattamente quale funzione ha causato l'errore e dove trovarlo. Pertanto, la risoluzione degli errori diventa molto più facile.

  • Le funzionalità possono essere riutilizzate in altri applicativi - Poiché le funzioni sono separate dal resto dello script, è possibile riutilizzare la stessa funzionalità in altri applicativi semplicemente includendo il file php che contiene queste funzioni.

La prossima sezione ti mostrerà come definire facilmente le tue funzioni in PHP.

Creare e chiamare una funzione

La sintassi di base per creare una funzione personalizzata può essere data:

function functionName(){ 
    //Codice da eseguire
}

La dichiarazione della funzione definita dall'utente inizia con la parola chiave function, seguita dal nome della funzione da creare, seguita da parentesi, ossia (), e infine il codice della funzione deve essere messo tra parentesi graffe { }.

Questo è un semplice esempio di funzione definita dall'utente, che mostra la data di oggi:

<?php
// Definire la funzione
function whatIsToday(){
    echo "Oggi è " . date('l', mktime());
}
// Chiamata alla funzione
whatIsToday();
?>
Prova a vedere‹/›

Attenzione:Il nome della funzione deve iniziare con un carattere letterale o un trattino basso, non con un numero, e può essere seguito da altri caratteri letterali, numerici o trattini bassi. Il nome della funzione non distingue tra maiuscole e minuscole.

Funzione con parametri

Puoi specificare i parametri quando definisci una funzione per accettare valori di input in tempo di esecuzione. Il funzionamento dei parametri è simile ai variabili di placeholder nella funzione; vengono sostituiti con i valori forniti alla funzione al momento della chiamata (detti parametri).

function myFunc($oneParameter, $anotherParameter){ 
    //Codice da eseguire
}

Puoi definire quante parametri desideri. Ma, per ogni parametro specificato, devi passare il parametro corrispondente alla funzione quando si chiama la funzione.

Nell'esempio seguente, la funzione getSum() accetta due valori interi come parametri, aggiunge semplicemente questi valori e visualizza il risultato nel browser.

<?php
// Definire la funzione
function getSum($num1, $num2){
  $sum = $num1 + $num2;
  echo "La somma dei numeri $num1 e $num2 è: $sum";
}
 
// Chiamata alla funzione
getSum(10, 20);
?>
Prova a vedere‹/›

L'output del codice sopra sarà:

La somma dei numeri 10 e 20 è: 30

Suggerimento:I parametri sono i valori che passi alla funzione, i parametri sono le variabili che ricevono i parametri nella funzione. Ma, nel uso comune, questi termini sono intercambiabili, ossia i parametri sono le variabili indipendenti.

Funzione con parametri opzionali e valori predefiniti

Puoi anche creare una funzione con parametri opzionali - devi semplicemente inserire il nome del parametro, seguita da un equalizzatore (=), quindi il valore predefinito, come mostrato di seguito.

<?php
// Definire la funzione
function customFont($font, $size=1.5){
    echo "<p style="font-family: $font; font-size: {$size}em;">Ciao, mondo!</p>";
}
 
// Chiamata alla funzione
customFont("Arial", 2);
customFont("Times", 3);
customFont("Courier");
?>
Prova a vedere‹/›

Come potete vedere, la terza chiamata a customFont () non include il secondo parametro. Questo farà sì che il motore PHP utilizzi il valore predefinito del parametro $size, ossia 1.5.

Restituzione di valori dalla funzione

Una funzione può restituire un valore utilizzando l'istruzione return al chiamante dello script. Questo valore può essere di qualsiasi tipo, inclusi array e oggetti.

<?php
// Definire la funzione
function getSum($num1, $num2){
    $total = $num1 + $num2;
    return $total;
}
 
// Stampa del valore di ritorno
echo getSum(5, 10); // Output: 15
?>
Prova a vedere‹/›

Una funzione non può restituire più valori. Ma è possibile ottenere un risultato simile restituendo un array, come nell'esempio seguente.

<?php
// Definire la funzione
function divideNumbers($dividend, $divisor){
    $quotient = $dividend / $divisor;
    $array = array($dividend, $divisor, $quotient);
    return $array;
}
 
// Assegnazione di variabili come array
list($dividend, $divisor, $quotient) = divideNumbers(10, 2);
echo $dividend; // Output: 10
echo $divisor; // Output: 2
echo $quotient; // Output: 5
?>
Prova a vedere‹/›

Passaggio dei parametri per riferimento a una funzione

In PHP ci sono due modi per passare un parametro a una funzione: passaggio per valore e passaggio per riferimento. Di default, i parametri delle funzioni vengono passati per valore, quindi se il valore del parametro cambia all'interno della funzione, non avrà alcun impatto esterno. Ma per permettere alla funzione di modificare i suoi parametri, devono essere passati per riferimento.

Il metodo di passaggio dei parametri per riferimento è aggiungere un trattino obliquo (&) davanti al nome del parametro nel definire la funzione, come nell'esempio seguente:

<?php
/* Definire una funzione che moltiplica un numero
e restituisce il nuovo valore */
function selfMultiply(&$number){
    $number *= $number;
    return $number;
}
 
$mynum = 5;
echo $mynum; // Output: 5
 
selfMultiply($mynum);
echo $mynum; // Output: 25
?>
Prova a vedere‹/›

Comprendere l'ambito delle variabili

È possibile dichiarare variabili in qualsiasi posizione di uno script PHP. Tuttavia, la posizione in cui vengono dichiarate determina l'ambito di visibilità della variabile nel programma PHP, ovvero dove possono essere utilizzate o accedute. Questa accessibilità si chiamaAmbito delle variabili.

Per impostazione predefinita, le variabili dichiarate all'interno di una funzione sono variabili locali e non possono essere accedute o operate al di fuori di essa, come mostrato nell'esempio seguente:

<?php
// Definire la funzione
function test(){
    $greet = "Hello World!";
    echo $greet;
}
 
test(); // Output: Hello World!
 
echo $greet; // Errore variabile non definita
?>
Prova a vedere‹/›

Allo stesso modo, se si tenta di accedere o importare una variabile esterna all'interno della funzione, si riceverà un errore di variabile non definita, come mostrato nell'esempio seguente:

<?php
$greet = "Hello World!";
 
// Definire la funzione
function test(){
    echo $greet;
}
 
test(); // Errore variabile non definita
 
echo $greet; // Output: Hello World!
?>
Prova a vedere‹/›

Come si può vedere dall'esempio sopra, non è possibile accedere alle variabili dichiarate all'interno della funzione dall'esterno, allo stesso modo, non è possibile accedere alle variabili dichiarate all'esterno dalla funzione. Questa separazione riduce le possibilità che le variabili all'interno della funzione siano influenzate dalle variabili del programma principale.

Suggerimento:È possibile utilizzare lo stesso nome per le variabili in diverse funzioni, poiché le variabili locali possono essere riconosciute solo dalla funzione che le ha dichiarate.

Parola chiave global

In alcuni casi, è necessario importare variabili dal programma principale nella funzione, e viceversa. In questo caso, è possibile utilizzare la parola chiave global prima delle variabili all'interno della funzione. Questa parola chiave trasforma la variabile in una variabile globale, rendendola visibile o accessibile sia all'interno che all'esterno della funzione, come mostrato nell'esempio seguente:

<?php
$greet = "Hello World!";
 
// Definire la funzione
function test(){
    global $greet;
    echo $greet;
}
 
test(); // Output: Hello World!
echo $greet; // Output: Hello World!
 
// Assegnare un nuovo valore alla variabile
$greet = "Goodbye";
 
test(); // Output: Goodbye
echo $greet; // Output: Goodbye
?>
Prova a vedere‹/›

VedreteClassi e oggetti PHPPer ulteriori informazioni sulla visibilità e il controllo dell'accesso, consultare il capitolo.

Creazione di una funzione ricorsiva

Una funzione ricorsiva è una funzione che si chiama a se stessa fino a quando non si verifica una condizione specifica. Le funzioni ricorsive sono spesso utilizzate per risolvere calcoli matematici complessi o per gestire strutture profondamente annidate, come ad esempio stampare tutti gli elementi di un array annidato.

Esempio seguente dimostra come funzionano le funzioni ricorsive.

<?php
//Definisci la funzione ricorsiva
function printValues($arr) {
    global $count;
    global $items;
    
    //Controlla se $arr è un array
    if(!is_array($arr)){
        die("ERROR: Input is not an array");
    }
    
    /*
        Ecco come si esplora l'array, chiamando ricorsivamente se value è un array
        La funzione aggiunge i valori trovati all'array degli elementi di output
        E aumenti il contatore per ogni valore trovato
    */
    foreach($arr as $a){
        if(is_array($a)){
            printValues($a);
        } else{
            $items[] = $a;
            $count++;
        }
    }
    
    //Restituisci il conteggio totale e i valori dell'array
    return array('total' => $count, 'values' => $items);
}
 
//Definisci un array annidato
$species = array(
    "uccelli" => array(
        "Aquila",
        "Papagaio",
        "Cigno"
    ),
    "mammiferi" => array(
        "Uomo",
        "gatto" => array(
            "Leone",
            "Tigre",
            "Jaguar"
        ),
        "Elefante",
        "Monito"
    ),
    "reptiles" => array(
        "snake" => array(
            "Cobra" => array(
                "Re della Cobra"
                "Cobra egiziana"
            ),
            "Viper",
            "Anaconda"
        ),
        "Crocodile",
        "Dinosaur" => array(
            "T-rex",
            "Alamosaurus"
        )
    )
);
 
//Calcola e stampa i valori dell'array嵌套
$result = printValues($species);
echo $result['total'] . ' value(s) found: ';
echo implode(', ', $result['values']);
?>
Prova a vedere‹/›

Attenzione:Stai attento quando crei una funzione ricorsiva, perché se il codice non è scritto correttamente, potrebbe causare un ciclo infinito di chiamate di funzione.