assertVerifica se un'asserzione è &false;
&reftitle.description;
PHP 5boolassertmixedassertionstringdescriptionPHP 7boolassertmixedassertionThrowableexceptionassert verifica l'
assertion data e prende gli opportuni provvedimenti se
il suo risultato è &false;.
Asserzioni tradizionali (PHP 5 e 7)
Se il parametro assertion è una stringa, verrà
valutata come codice PHP da assert.
I vantaggi di usare le stringhe con assertion sono
meno overhead nella verifica e la visualizzazione dei messaggi
che contengono assertion quando
questa fallisce. Ciò significa che se si passa una condizione booleana
come assertion, questa condizione non sarà mostrata come
parametro della funzione di asserzione che può essere definita con la
funzione assert_options, la condizione è convertita
in una stringa prima di chiamare la funzione handler, e il valore booleano &false;
viene convertito in una stringa vuota.
Le asserzioni dovrebbero essere utilizzate solo per il debug. Si possono
usare per controlli di coerenza che testano per condizioni che dovrebbero
essere sempre &true; e che, in caso contrario, indichino errori di programmazione,
oppure per verificare la presenza o meno di certe caratteristiche, tipo le estensioni,
oppure certi limiti di sistema o caratteristiche.
Le asserzioni non dovrebbero essere utilizzate per le normali operazioni di
runtime quali il controllo dei parametri di input. Come regola si deve avere
che il programma debba funzionare correttamente anche disabilitando le regole di
asserzione.
Il comportamento di assert può essere impostato
tramite assert_options oppure tramite .ini-settings come descritto
nelle pagine del manuale relative a quelle funzioni.
La funzione assert_options e/o il parametro
ASSERT_CALLBACK permettono/e
di attivare una funzione di callback per gestire una asserzione fallita.
Le callback di assert sono particolarmente utili
per costruire suite di test poiché permettono di catturare facilmente
il codice passato all'assert, oltre alle informazioni
su dove l'assert è scattato. Sebbene quest'ultime informazioni siano
rilevabili anche con altri metodi, l'uso delle asserzione rende il tutto
molto più veloce e semplice!
Le funzioni di callback devono accettare tre parametri. Il primo
conterrà il nome del file in cui si trova l'asserzione fallita. Il
secondo parametro conterrà il numero di linea dell'asserzione fallita, ed
il terzo parametro conterrà l'espressione dell'asserzione fallita (se
qualsiasi — valore letterale come 1 o "due" non verrà passato con
questo parametro). Gli utenti di PHP 5.4.8 e successivi possono anche fornire un quarto
parametro opzionale, che conterrà la
description data all'assert, se
è stata impostata.
Aspettative (solo PHP 7)assert è un costrutto del linguaggio in PHP 7, consentendo
la definizione delle aspettative: asserzioni che hanno effetto in ambienti di
sviluppo e di test, ma sono ottimizzate per avere un costo zero in
produzione.
Mentre assert_options può ancora essere utilizzata per controllare
il comportamento come sopra descritto per ragioni di retrocompatibilità, il codice
solo per PHP 7 dovrebbe usare le due nuove direttive di configurazione per controllare
il comportamento di assert e non chiamare
assert_options.
Direttive di configurazione di PHP 7 per assertDirettivaValore predefinitoValori possibili
zend.assertions
11: genera ed esegue il codice (modalità di sviluppo)
0: genera il codice ma lo salta in fase di runtime
-1: non genera il codice (modalità di produzione)
assert.exception
01: segnala quando l'asserzione fallisce, o
sollevando l'oggetto fornito come exception
o sollevando un nuovo oggetto AssertionError se
exception non è stato fornito
0: utilizza o genera un
Throwable come descritto sopra, ma genera
solo un warning basato su quell'oggetto al posto di sollevarlo
(compatibile con il comportamento di PHP 5)
&reftitle.parameters;
assertion
L'asserzione. In PHP 5, questo deve essere o una string da
essere valutata o un boolean da testare. In PHP 7, questo può
anche essere qualsiasi espressione che restituisce un valore, che verrà eseguita e
il risultato usato per indicare se l'asserzione è riuscita o meno.
description
Una descrizione opzionale che sarà inclusa nel messaggio di fallimento se
l'assertion fallisce.
exception
In PHP 7, il secondo parametro può essere un
oggetto Throwable al posto di una string
descrittiva, nel qual caso questo è l'oggetto che sarà
sollevato se l'asserzione fallisce e la
direttiva di configurazione
assert.exception è abilitata.
&reftitle.returnvalues;
&false; se l'asserzione è false, &true; in caso contrario.
&reftitle.changelog;
&Version;&Description;7.0.0assert è ora un costrutto del linguaggio e non una
funzione. assertion ora può essere usata come un'espressione.
Il secondo parametro è ora interpretato o come un
exception (se
viene passato un oggettoThrowable), o come la
description supportato da PHP 5.4.8 in poi.
5.4.8
È stato aggiunto il parametro description. La
description è anche ora fornita ad una funzione
di callback in modalità ASSERT_CALLBACK come quarto
parametro.
&reftitle.examples;
Asserzioni tradizionali (PHP 5 e 7)Gestione di un'asserzione fallita con un handler personalizzato
Assertion Failed:
File '$file'
Line '$line'
Code '$code' ";
}
// Imposta la callback
assert_options(ASSERT_CALLBACK, 'my_assert_handler');
// Fa un'asserzione che dovrebbe fallire
assert('mysql_query("")');
?>
]]>
Uso di un gestore personalizzato per stampare una descrizione
]]>
&example.outputs;
Aspettative (solo PHP 7)Aspettative senza un'eccezione personalizzata
]]>
Con zend.assertions impostato a 0,
l'esempio di sopra stamperà:
Con zend.assertions impostato a 1
e assert.exception impostato a 0,
l'esempio di sopra stamperà:
Con zend.assertions impostato a 1
e assert.exception impostato a 1,
l'esempio di sopra stamperà:
Aspettative con un'eccezione personalizzata
]]>
Con zend.assertions impostato a 0,
l'esempio di sopra stamperà:
Con zend.assertions impostato a 1
e assert.exception impostato a 0,
l'esempio di sopra stamperà:
Con zend.assertions impostato a 1
e assert.exception impostato a 1,
l'esempio di sopra stamperà:
&reftitle.seealso;
assert_options