(PHP 4, PHP 5)
assert — Verifica se un'asserzione è FALSE
assert() verifica se la data
assertion
è FALSE
, nel caso intraprende le
opportune azioni.
Se il parametro assertion
è una stringa
questo sarà considerato da assert() come codice PHP.
I vantaggi di usare le stringhe con assertion
sono
che si ha 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 che può essere definita con assert_options(),
la condizione sarò in 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 sono sempre TRUE
e che, in caso contrario, indichino errori di programmazione,
oppure per verificare la presenza o meni 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 possa girare senza la presenza delle regole di asserzione.
Il comportamento di assert() può essere impostato tramite assert_options() oppure tramite .ini-settings come descritto nel pagine del manuale relative a quelle funzioni.
La funzione assert_options() e/o il parametro ASSERT_CALLBACK permetto di attivare una funzione di callback per gestire una asserzione fallita.
I 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 più 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 conterrà l'espressione dell'asserzione (se fornito - valori alfanumerici quali 1 o due" non saranno passati a questo parametro).
Example #1 Gestione di una asserzione fallita con codice personalizzato
<?php
// Attiva le asserzioni
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_WARNING, 0);
assert_options(ASSERT_QUIET_EVAL, 1);
// Crea la funzione personalizzata
function my_assert_handler($file, $line, $code)
{
echo "<hr>Assertion Failed:
File '$file'<br />
Line '$line'<br />
Code '$code'<br /><hr />";
}
// Imposta il callback
assert_options(ASSERT_CALLBACK, 'my_assert_handler');
// Crea una asserzione che fallisce
assert('mysql_query("")');
?>