PHP 7 - Aspettative

Expectationssono un miglioramento compatibile con le versioni precedenti della vecchia funzione assert (). L'aspettativa consente asserzioni a costo zero nel codice di produzione e offre la possibilità di generare eccezioni personalizzate quando l'asserzione fallisce. assert () è ora un costrutto di linguaggio, in cui il primo parametro è un'espressione rispetto ad essere una stringa o un booleano da testare.

Direttive di configurazione per assert ()

Direttiva Valore predefinito Possibili valori
zend.assertions 1

1 - generare ed eseguire codice (modalità di sviluppo)

0 - genera codice ma saltaci intorno in fase di esecuzione

-1 - non generare codice (modalità di produzione)

assert.exception 0

1 - throw, quando l'asserzione fallisce, sia lanciando l'oggetto fornito come eccezione sia lanciandone uno nuovo AssertionError oggetto se l'eccezione non è stata fornita.

0 - usa o genera un Throwable come descritto sopra, ma genera solo un avviso basato su quell'oggetto piuttosto che lanciarlo (compatibile con il comportamento di PHP 5)

Parametri

  • assertion- L'asserzione. In PHP 5, deve essere una stringa da valutare o un booleano da testare. In PHP 7, questa può anche essere qualsiasi espressione che restituisce un valore, che verrà eseguito e il risultato viene utilizzato per indicare se l'asserzione è riuscita o meno.

  • description - Una descrizione facoltativa che verrà inclusa nel messaggio di errore, se l'asserzione non riesce.

  • exception - In PHP 7, il secondo parametro può essere un file Throwable oggetto invece di una stringa descrittiva, nel qual caso questo è l'oggetto che verrà lanciato, se l'asserzione fallisce e il assert.exception la direttiva di configurazione è abilitata.

Valori restituiti

FALSE se l'affermazione è falsa, TRUE altrimenti.

Esempio

<?php
   ini_set('assert.exception', 1);

   class CustomError extends AssertionError {}

   assert(false, new CustomError('Custom Error Message!'));
?>

Produce il seguente output del browser:

Fatal error: Uncaught CustomError: Custom Error Message! in...