Saltar al contenido

¿Por qué usamos assert () y assert_options () en PHP?

Solución:

Assert() es una función inteligente que funciona en la misma línea que nuestras declaraciones de impresión, pero solo tienen algún efecto si una determinada condición no coincide. Esencialmente, assert() se utiliza para decir “Esta afirmación debe ser cierta; si no lo es, dímelo”. Considere el siguiente ejemplo:

<?php
    print "Stage 1n";
    assert(1 == 1);
    print "Stage 2n";
    assert(1 == 2);
    print "Stage 3n";
?>

Aquí tenemos dos assert()s, con la primera llamada afirmando que uno debe ser igual a uno, y la segunda llamada afirmando que uno debe ser igual a dos. Como es imposible redefinir constantes como 1 y 2, la primera assert() siempre se evaluará como verdadero y el segundo siempre se evaluará como falso. Aquí está el resultado del script:

Etapa 1 Etapa 2 Advertencia: aseverar ()

[http://www.php.net/function.assert]: La afirmación falló en /home/paul/sandbox/php/assert.php en la línea 5

Etapa 3

Tenga en cuenta que la primera assert() no se ve en la salida en absoluto porque se evaluó para true, mientras que el segundo assert() evaluado a false, entonces obtenemos un warning acerca de un assertion failure. También tenga en cuenta que vemos "Stage 3" después de la afirmación failure warning, porque el script continúa ejecutándose después de la falla. Siempre que las afirmaciones se evalúen como verdaderas, no tienen ningún efecto en la ejecución del script, lo que significa que puede insertarlas con fines de depuración y no tener que preocuparse por eliminarlas una vez que haya terminado de depurar.


Si le preocupa que sus afirmaciones ralenticen la ejecución, lo cual, aunque el impacto de velocidad será mínimo, sigue siendo una preocupación válida, puede deshabilitar la ejecución de assert() usando el assert_options() función o configurando assert.active a Off en su archivo php.ini. Si quieres usar assert_options(), se necesitan dos parámetros: la opción para establecer y el valor al que desea establecerlo, y hay una variedad de formas en que puede hacer que assert () sea más poderoso.
ingrese la descripción de la imagen aquí

Tenga en cuenta que todas estas opciones se pueden configurar en su php.ini archivo para que siempre estén en efecto; las opciones clave para cambiar son assert.active, assert.warning, assert.bail, assert.quiet_eval, and assert_callback.

ASSERT_CALLBACK es una opción muy útil, ya que le permite escribir un controlador de errores para cuando su código falla en una afirmación. Se necesita el nombre de cadena de una función para ejecutarse cuando fallan las aserciones, y la función que defina debe tomar tres parámetros: uno para contener el archivo donde ocurrió la aserción, otro para contener la línea y otro para contener la expresión. Usar los tres juntos en su función de devolución de llamada le permite generar mensajes de error significativos que puede depurar fácilmente. Considere este fragmento de código:

<?php
    function assert_failed($file, $line, $expr) {
        print "Assertion failed in $file on line $line: $exprn";
    }

    assert_options (ASSERT_CALLBACK, 'assert_failed');
    assert_options (ASSERT_WARNING, 0);

    $foo = 10;
    $bar = 11;
    assert('$foo > $bar');
?>

Ref: http://www.hackingwithphp.com/19/8/3/making-assertions


Ejemplo de documentación oficial

assert_options – Establecer / obtener las diversas banderas de aserción

Ejemplo # 1 ejemplo de assert_options ()

<?php
// This is our function to handle 
// assert failures
function assert_failure()
{
    echo 'Assert failed';
}

// This is our test function
function test_assert($parameter)
{
    assert(is_bool($parameter));
}

// Set our assert options
assert_options(ASSERT_ACTIVE,   true);
assert_options(ASSERT_BAIL,     true);
assert_options(ASSERT_WARNING,  false);
assert_options(ASSERT_CALLBACK, 'assert_failure');

// Make an assert that would fail
test_assert(1);

// This is never reached due to ASSERT_BAIL 
// being true
echo 'Never reached';
?>

Según la documentación de PHP assert()

  1. Si la aserción se da como una cadena, será evaluada como código PHP por assert().
  2. Si pasa una condición booleana como aserción, esta condición no aparecerá como parámetro para la función de aserción que puede haber definido con assert_options()La condición se convierte en una cadena antes de llamar a esa función de controlador, y el booleano FALSE se convierte como una cadena vacía.
  3. Assertions debe usarse como un debugging característica única. Puede usarlos para verificaciones de cordura que prueban condiciones que siempre deberían ser VERDADERAS y que indican algunos errores de programación en caso contrario o para verificar la presencia de ciertas características como funciones de extensión o ciertos límites y características del sistema.
  4. Assertions no debe usarse para operaciones normales en tiempo de ejecución como input parameter cheques. Como regla general, su código siempre debería poder funcionar correctamente si la verificación de afirmaciones no está activada.
  5. El comportamiento de assert() puede ser configurado por assert_options() o por .ini-settings descrito en esa página del manual de funciones. assert_options() función y / o ASSERT_CALLBACK La directiva de configuración permite que se establezca una función de devolución de llamada para manejar afirmaciones fallidas. 6.assert() las devoluciones de llamada son particularmente útiles para crear conjuntos de pruebas automatizadas porque le permiten capturar fácilmente el código pasado a la aserción, junto con información sobre dónde se realizó la aserción. Si bien esta información se puede capturar a través de otros métodos, el uso de aserciones lo hace mucho más rápido y fácil.

los assert() La función es una buena manera de asegurar que ciertas condiciones sean verdaderas a lo largo de la vida de su código. Para citar este artículo de Paul Hudson:

Esencialmente, assert () se usa para decir “Esta afirmación debe ser cierta; si no lo es, dímelo”.

Para habilitar el manejo de aserciones, use assert_options(ASSERT_ACTIVE), y también usa assert_options() con otros argumentos para controlar lo que sucede cuando fallan las afirmaciones (por ejemplo, finalizar la ejecución del script PHP cuando falla una afirmación, llamar a una función de controlador, que podría usarse para enviar correos electrónicos, registrar datos en archivos y / o tablas de bases de datos, etc.). Consulte la sección de parámetros para ver la lista de todas las opciones y sus resultados.

Pruebe algunas de las opciones de este ejemplo de patio de recreo.

Lea ese artículo para obtener más información sobre ambas funciones.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *