AssertionError en PHP 7

Las aserciones son verificaciones de tiempo de ejecución utilizadas como una función de depuración. Usando la construcción del lenguaje PHP 7 assert(), podemos confirmar si ciertas expresiones PHP son verdaderas o falsas. Cada vez que falla la aserción, se lanza AssertionError.
La clase AssertionError no tiene métodos propios, todos se heredan de la clase de error principal, según la siguiente sinopsis de la clase:

AssertionError extends Error {
final public string Error::getMessage (void)
final public Throwable Error::getPrevious (void)
final public mixed Error::getCode (void)
final public string Error::getFile (void)
final public int Error::getLine (void)
final public array Error::getTrace (void)
final public string Error::getTraceAsString (void)
public string Error::__toString (void)
final private void Error::__clone (void)
}

PHP 7 proporciona dos directivas de configuración para controlar el comportamiento de assert(): zend.assertions y assert.exception. La función assert() solo se ejecutará y posiblemente arrojará AssertionError si zend.assertions = 1 y assert.exception = 1, según el siguiente ejemplo:

<?php
try {
assert('developer' === 'programmer');
}
catch (AssertionError $e) {
echo 'Caught: ' . $e->getMessage();
}

Suponiendo que las directivas de configuración están todas establecidas, el código anterior generará el mensaje Caught: assert(‘developer’ === ‘programmer’). Si solo zend.assertions = 1 pero assert.exception = 0, entonces el bloque catch no tendrá efecto y se genera la siguiente advertencia: Advertencia: Warning: assert():
assert(‘developer’ === ‘programmer’) failed.

El derivado zend.assertions puede estar completamente habilitado o deshabilitado solo en el archivo php.ini.

Comparte