Aserciones tradicionales (PHP 5 y 7)
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.
Expectativas (solamente PHP 7)
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().
*************** DESDE AQUI ****************
PHP 7 configuration directives for assert()
Directive |
Default value |
Possible values |
zend.assertions
|
1 |
-
1 : generate and execute code (development mode)
-
0 : generate code but jump around it at runtime
-
-1 : do not generate code (production mode)
|
assert.exception
|
0 |
-
1 : throw when the assertion fails, either by
throwing the object provided as the exception
or by throwing a new AssertionError object if
exception wasn't provided
-
0 : use or generate a
Throwable as described above, but only
generate a warning based on that object rather than throwing it
(compatible with PHP 5 behaviour)
|