(No version information available, might only be in Git)
Aserción — Verifica si la aserción es FALSE
PHP 5 y 7
PHP 7
   La función assert() revisará el parámetro
   assertion proporcionado y tomará la acción apropiada si
   su resultado es FALSE.
  
    Si el parámetro assertion es proporcionado como un string
    será evaluado como código PHP por la función assert().
    Las ventajas de un parámetro assertion como string es que son
    menos sobrecargados cuando la comprobación de la aserción está deshabilitada y los
    mensajes que contienen la expresión assertion, la
    expresión falla. Esto significa que si pasa una condición de tipo boolean como
    assertion esta condición no se mostrará como
    parámetro a la función de aserción la cual tiene que haber definido con la función
    assert_options(), la condición es convertida
    a un string antes de llamar ese manejador de función, y el tipo boolean FALSE
    es convertido como el string vacío.
   
    Las aserciones deberían ser utilizadas solamente como una característica de depuración. Debería
    utilizarlas para las revisiones de buen funcionamiento las cuales comprueban las condiciones que siempre
    deberían ser TRUE y que indican algunos errores de programación o si no,
    para revisar la presencia de algunas características, como funciones de
    extensión o ciertos límites del sistema y características.
   
Las aserciones no deberían utilizarse para operaciones normales en tiempo de ejecución como revisiones de parámetros de entrada. Como regla general su código siempre debería ser capaz de funcionar correctamente aún si la verificación de aserción no está activada.
El comportamiento de la función assert() podría ser configurado por la función assert_options() o por .ini-settings el cual está descrito en la página del manual de esas funciones.
    La función assert_options() y/o la directiva de configuración
    ASSERT_CALLBACK permite que una función de llamada de retorno sea establecida
    para manejar aseciones fallidas.
   
Las llamadas de retorno assert() son particularmente útiles para construir conjuntos de pruebas automatizadas porque le permiten capturar fácilmente el código pasado a la aserción, junto con la información en donde fue hecha la aserción. Mientras que la información puede ser capturada a través de otros métodos, utilizar asernciones lo hace mucho más rápido y más fácil!
    La función de llamada de retorno debería aceptar tres argumentos. El primero
    contendrá el fichero en que falló la aserción. El segundo
    contendrá la línea en la que falló la aserción y
    el tercer argumento contendrá la expresión que falló (si la
    hubiera — valores literales tales como 1 o "dos" no se pasarán a través
    de este argumento). Los usuarios de PHP 5.4.8 y versiones posteriores también podrían proveer un cuarto
    argumento opcional, que contendrá el parámetro
    description proporcionado a la función assert(), si
    fue establecido.
   
La función assert() es una construcción de lenguaje en PHP 7, que permite la definición de expectativas: las aserciones que surten efecto en ambientes de desarrollo y pruebas, pero que se optimizan para que tengan costo cero en la producción.
************* desde aqui *************** Mientras que assert_options() puede ser utilizada para controlar el comportamiento como se describe anteriormente por la compatibilidad con versiones anteriores, el código PHP 7 sólo debería usar las dos directivas nuevas de configuración para controlar el comportamiento de assert() y no llamar a assert_options().
| Directive | Default value | Possible values | 
|---|---|---|
| zend.assertions | 1 | 
 | 
| assert.exception | 0 | 
 | 
assertionThe assertion. In PHP 5, this must be either a string to be evaluated or a boolean to be tested. In PHP 7, this may also be any expression that returns a value, which will be executed and the result used to indicate whether the assertion succeeded or failed.
description
       An optional description that will be included in the failure message if
       the assertion fails.
      
exceptionIn PHP 7, the second parameter can be a Throwable object instead of a descriptive string, in which case this is the object that will be thrown if the assertion fails and the assert.exception configuration directive is enabled.
   FALSE if the assertion is false, TRUE otherwise.
  
| Versión | Descripción | 
|---|---|
| 7.0.0 | assert() is now a language construct and not a
        function. assertion() can now be an expression.
        The second parameter is now interpreted either as an exception(if a
        Throwable object is given), or as thedescriptionsupported from PHP 5.4.8 onwards. | 
| 5.4.8 | The descriptionparameter was added. Thedescriptionis also now provided to a callback
        function inASSERT_CALLBACKmode as the fourth
        argument. | 
Ejemplo #1 Handle a failed assertion with a custom handler
<?php
// Active assert and make it quiet
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_WARNING, 0);
assert_options(ASSERT_QUIET_EVAL, 1);
// Create a handler function
function my_assert_handler($file, $line, $code)
{
    echo "<hr>Assertion Failed:
        File '$file'<br />
        Line '$line'<br />
        Code '$code'<br /><hr />";
}
// Set up the callback
assert_options(ASSERT_CALLBACK, 'my_assert_handler');
// Make an assertion that should fail
assert('mysql_query("")');
?>
Ejemplo #2 Using a custom handler to print a description
<?php
// Active assert and make it quiet
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_WARNING, 0);
assert_options(ASSERT_QUIET_EVAL, 1);
// Create a handler function
function my_assert_handler($file, $line, $code, $desc = null)
{
    echo "Assertion failed at $file:$line: $code";
    if ($desc) {
        echo ": $desc";
    }
    echo "\n";
}
// Set up the callback
assert_options(ASSERT_CALLBACK, 'my_assert_handler');
// Make an assertion that should fail
assert('2 < 1');
assert('2 < 1', 'Two is less than one');
?>
El resultado del ejemplo sería:
Assertion failed at test.php:21: 2 < 1 Assertion failed at test.php:22: 2 < 1: Two is less than one
Ejemplo #3 Expectations without a custom exception
<?php
assert(true == false);
echo 'Hi!';
?>
With zend.assertions set to 0, the above example will output:
Hi!
With zend.assertions set to 1 and assert.exception set to 0, the above example will output:
Warning: assert(): assert(true == false) failed in - on line 2 Hi!
With zend.assertions set to 1 and assert.exception set to 1, the above example will output:
Fatal error: Uncaught AssertionError: assert(true == false) in -:2
Stack trace:
#0 -(2): assert(false, 'assert(true == ...')
#1 {main}
  thrown in - on line 2
Ejemplo #4 Expectations with a custom exception
<?php
class CustomError extends AssertionError {}
assert(true == false, new CustomError('True is not false!'));
echo 'Hi!';
?>
With zend.assertions set to 0, the above example will output:
Hi!
With zend.assertions set to 1 and assert.exception set to 0, the above example will output:
Warning: assert(): CustomError: True is not false! in -:4
Stack trace:
#0 {main} failed in - on line 4
Hi!
With zend.assertions set to 1 and assert.exception set to 1, the above example will output:
Fatal error: Uncaught CustomError: True is not false! in -:4
Stack trace:
#0 {main}
  thrown in - on line 4