Llamadas a funciones que no existen

Es habitual invocar funciones que no existen porque muchas veces tienen nombres sin excesiva coherencia o tienen un guión bajo, etc. Por ejemplo, _strip_tags()_ tiene un guión bajo mientras que _stripslashes()_ no lo tiene.

También es muy común invocar una función que no existe en el _script_ actual, pero sí en algún otra parte (por ejemplo, en una librería de funciones, etc.) Si introducimos una llamada a una función que no existe, como por ejemplo:

strip_tag($str);

o

funcionInexistente();

obtendremos un error fatal similar al siguiente:

Fatal error: Call to undefined function strip_tag() in
   C:\wamp\www\sesion5\index.php on line ...

o

Fatal error: Call to undefined function funcioninexistente() in
   C:\wamp\www\sesion5\index.php on line ...

Para el número de parámetros incorrectos obtendremos una advertencia y el script continua con su ejecución.

Por ejemplo:

<?php
   strstr();
   echo ;
?>

Este _script_ nos muestra la advertencia y sigue con la ejecución como vemos en el resultado de la ejecución del anterior script:

Warning: Wrong parameter count for strstr() in C:\wamp\www\sesion5\index.php on line 2
Hola Mundo

Como PHP no permite la sobrecarga de funciones, esta línea siempre será incorrecta aunque no siempre veremos esa advertencia. La misma instrucción dentro del siguiente código también es incorrecta:

<?php
   if ($var == 4) {
      strstr();
   }
?>

Pero hasta que la variable $var no tenga el valor 4, la invocación de strstr() no se producirá, por lo que no se mostrará la advertencia. El intérprete de PHP no se molesta en analizar secciones de código que no son necesarias para la ejecución actual del script. Tendremos que probarlo minuciosamente.

La invocación incorrecta de funciones es algo habitual pero como los mensajes de error resultantes identifican la línea exacta y la llamada que origina el problema, se pueden corregir fácilmente. Solamente resultan difíciles de encontrar si el proceso de prueba es pobre y no comprueba todo el código ejecutado condicionalmente.
Al realizar pruebas, uno de los objetivos consiste en ejecutar todas las líneas de código una vez. Otros es probar todas las condiciones y clases de entrada. Actualmente los frameworks PHP más populares Symfony, CakePHP, Zend Framework y CodeIgniter soportan la metodología de desarrollo guiado por pruebas mediante el uso de frameworks de pruebas como SimpleTest o PHPUnit. Más información en esta entrada de la wikipedia: http://es.wikipedia.org/wiki/Desarrollo_guiado_por_pruebas

results matching ""

    No results matching ""