Volendo precisare meglio quanto detto si ipotizzi di creare una funzione come la seguente:

function blah_blah(): void {
    return 555; 
}

In PHP 5.6 il risultato della sua esecuzione sarebbe stato il seguente:

Parse error: syntax error, unexpected ':', expecting '{' in /path/func.php on line 2

Questo perché il Void Return Type non veniva supportato; in PHP 7.1 abbiamo invece:

Fatal error: A void function must not return a value in /path/func.php on line 3

Si ricordi infatti che non dovrà essere restituito alcun valore; gli altri tipi di ritorno possono essere forzati al momento della chiamata alla funzione, void invece viene verificato direttamente in fase di compilazione e tentare di forzarlo produrrebbe un errore già prima della chiamata. E' quindi valida la sintassi che non specifica alcun valore di ritorno (ritorno implicito):

function blah_blah(): void {
    
}

così come quella che esplicita il ritorno di un valore ma non definisce alcun valore:

function blah_blah(): void {
    return;
}

mentre void, essendo valido unicamente come tipo di ritorno, non può essere utilizzato come tipo per un parametro; quindi la funzione seguente darà origine ad un Fatal error ("void cannot be used as a parameter type"):

function blah_blah(void $blh) { 
}

E' necessario fare particolare attenzione nell'uso del Void Return Type all'interno delle classi perché esso non può essere modificato tramite ereditarietà; data un'espressione come la seguente:

class Blah
{
    public function blah_blah(): void {
    }
}

non è quindi consentita un'alterazione di tipo di questo genere:

class Blahblah extends Blah
{
    public function blah_blah(): array { 
    }
}

diversamente di darà origine ad un Fatal error ("Fatal error: Declaration of Blahblah::blah_blah(): array must be compatible with Blah::blah_blah(): void..").

Via PHP Wiki

CommentaDi' la tua

Il tuo indirizzo email non sarà mostrato pubblicamente. I campi obbligatori sono contrassegnati da *