Professional Documents
Culture Documents
Esta es la práctica mas usual que se encuentra en los desarrollos en php. La mayoría
de programadores no tienen en cuenta si la variable fue definida o no y la utilizan
directamente sin percatarse en el problema que eso puede acarrear.
?
1<?php
2 if($variable) echo "ejecute sentencia";
3?>
Recordemos lo que se enseña cuando aprendemos el magnánimo lenguaje C que profesa en uno de sus
apartados:
Ahora que ya sabemos eso, me pregunto: ¿y como demonios va a saber que contiene una variable si ni siquiera
existe a nivel de memoria, es decir, si no se ha definido?
Cierto es que con PHP, la definición de variables no es necesaria, pero y si no existe, ¿dónde la va a buscar?
?
1
2
3
4<?
5// Acá se asume la conversión de null a false
6$variable = NULL;
7if($variable) echo "se ejecutaría si fuera cierto";
8
9// Acá se hace correctamente, definiendo de antemano como false
1$variable = false;
0
1if($variable) echo "se ejecutaría si fuera cierto";
1
1// Si es una variable que supuestamente existe pero no hay
2// seguridad que exista como un $_GET
1
3if(isset($_GET['indice_variable'])) echo "se ejecutaría si fuera cierto";
1?>
4
1
5
Lo mejor por hacer siempre es validar primero si la variable está definida o definirla antes, si es el efecto.
Ahora que ya sabemos que lo mejor es definir las variables antes de validarlas, otra buena costumbre o muy
buena costumbre mejor, es el tratamiento de las variables de tipo string.
?
1<?
2 if($variable == 'texto') echo "ejecute sentencia";
3?>
•
NOOOO, no esta bien, para eso existen unas funciones para tratamniento de cadenas que se
deben utilizar.
?
1<?
2 if(strcmp($variable,'texto') == 0) echo "Esto si valida y devuelve un
3
booleano";
?>
?
1<?
2 $variable = '1' // Nótese que es un string.
3
4
if($variable) echo "Validar si es cierto.";
5
6
if($variable == 1) echo "Validar si es cierto.";
7
8
if($variable == '1') "Validar si es cierto.";
9
1
0?>
Esta práctica hace referencia al uso de los strings como variables de cualquier otro tipo, es decir, se tiene una
variable de valor 1 como string es decir, '1' y con esta variable, se pretende validar 3 momentos:
1. que si la variable como viene con valor = 1, entonces, se asume que por validación booleana, de un
resultado de true y si puede ser true, pero no por el 1, porque es un string, solo devuelve true porque contiene
un valor.
2. se trata de validar 2 tipos de valores diferentes, un string con un integer, entonces el compilador debe hacer
conversión de tipos, entonces puede ocurrir problemas porque o ambos se establecen como strings o como
enteros.
3. comparación de strings con operador "==", práctica no adecuada, como describí antes, para eso están las
funciones de strings.
Por último, no me resta mas que recomendarles, que como desarrolladores, consideren que su aplicación debe
ser óptima, tanto en la interfaz que debe ser amigable como en la parte sustancial del aplicativo: el código. Si
el código es óptimo, van a tener una aplicación mas escalable y que funcione como debe ser y se evitarán
problemas indeseables y ahorraran tiempo de reprocesos, verificando problemas que se pudieron evitar con tan
solo seguir buenas conductas.
<?php
try {
$person>
setName('John Doe');
$person>
setAddress('Something St. 12');
$person>
setbirthDate('10101900');
$person>
store();
} catch (Exception e) {
throw new DataPopulationException(
'Unable to fill data for person ' . $person>
getId(), e
);
}
?>