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 assert()
    
    
     
      
       | Direttiva | Valore predefinito | Valori possibili | 
     
     
      
       | zend.assertions | 1 | 
         
          1: 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 | 0 | 
         
          1: segnala quando l'asserzione fallisce, o
          sollevando l'oggetto fornito comeexceptiono sollevando un nuovo oggetto AssertionError seexceptionnon è 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) |