PHP 7 - Expectativas

Expectationsson una mejora compatible con versiones anteriores de la función vieja assert (). Expectation permite afirmaciones de costo cero en el código de producción y proporciona la capacidad de lanzar excepciones personalizadas cuando falla la afirmación. assert () es ahora una construcción de lenguaje, donde el primer parámetro es una expresión en comparación con ser una cadena o booleano para ser probado.

Directivas de configuración para assert ()

Directiva Valor por defecto Valores posibles
zend.assertions 1

1 - generar y ejecutar código (modo de desarrollo)

0 - generar código pero saltarlo en tiempo de ejecución

-1 - no generar código (modo de producción)

assert.exception 0

1 - lanzar, cuando la aserción falla, ya sea lanzando el objeto provisto como excepción o lanzando un nuevo AssertionError objeto si no se proporcionó una excepción.

0 - use o genere un Throwable como se describe anteriormente, pero solo genera una advertencia basada en ese objeto en lugar de lanzarlo (compatible con el comportamiento de PHP 5)

Parámetros

  • assertion- La afirmación. En PHP 5, esto debe ser una cadena para ser evaluada o un booleano para ser probado. En PHP 7, esto también puede ser cualquier expresión que devuelva un valor, que se ejecutará y el resultado se usa para indicar si la aserción tuvo éxito o no.

  • description - Una descripción opcional que se incluirá en el mensaje de falla, si falla la aserción.

  • exception - En PHP 7, el segundo parámetro puede ser un Throwable objeto en lugar de una cadena descriptiva, en cuyo caso este es el objeto que se lanzará, si la aserción falla y la assert.exception la directiva de configuración está habilitada.

Valores devueltos

FALSE si la afirmación es falsa, TRUE de otra manera.

Ejemplo

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

   class CustomError extends AssertionError {}

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

Produce la siguiente salida del navegador:

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