Laburo España: 250.000 ofertas de empleo

Sputnik

Buenas practicas en PHP (1)

PHP
Viernes, 15 de julio de 2005

Cuando me doy un paseito por páginas que nos muestran tutoriales de PHP, me doy cuenta que poca gente usa ciertos habitos que dotarian a su código de mayor "robustez", por llamarlo de alguna forma.


Y como muestra, unos ejemplos.

Uno de esos habitos fatales que mucha gente usa, se dá cuando se trabaja con arreglos (arrays) indexados por cadenas:

$arr = array('foo'=>'FOOOO', 'bar'=>'BAAAAR');
echo $arr[bar];


Como esperarias, este resultado imprimiria BAAAAR. Efectivamente asi es, PEEERO, si por un casual nosotros tuviesemos una constante que se llamase "bar", que pasaria...

define('bar', 'FOOOOO');
$arr = array('foo'=>'FOOOOO', 'bar'=>'BAAAAAR');
echo $arr[bar];


En este caso, la cadena que imprimiria este cacho de código sería: FOOOOO, ya que tenemos una constante que se llama "bar". Para evitar este problema, lo mejor y mas versatil es que llamemos siempre a este tipo de arreglos entrecomillando el indice:

echo $arr['bar'];

Otra práctica que me llama la atención, es eliminar los mensajes de notificación cuando se está en desarrollo. Estos mensajes ayudan a que no te dejes nada por hacer y declares todo lo que tienes que declarar para dotar a tu código de mayor robustez. Considera este código:

if (isset($_GET['perez'])) {
$content = " HOLA PEREZ ";
}
return $content;


Esto, por raro que parezca, se da bastante, y provoca un mensaje de notificacion que nos avisa (cuando $_GET['perez'] no existe) que $content no tiene valor. Para evitarnos esto, declara siempre tus variables (o en este caso, ponle algun valor en el else):

$content = NULL;
....


Y recuerda cuando estés en desarrollo, meter los mensajes de notificación para enterarte de todo, yo abogo por usar:

error_reporting(E_ALL);

En entornos de desarrollo... en producción, suelo usar: E_ALL - E_NOTICE.

Otra práctica muy usual es reinventar la rueda.... mucha gente desconoce el potencial de PHP y se dedica a desarrollar funciones para por ejemplo: pasar a mayusculas, cortar un texto, ... antes de hacer una función, comprueba el manual de referencia de PHP para asegurarte de que no vas a perder el tiempo. Siempre es preferible usar las funciones de PHP antes que hacernoslas nosotros, por tiempo de ejecución y por reusabilidad de código.

Embeber HTML dentro de PHP es algo que hacemos todos.... pero poca gente utiliza la sintaxis adecuada.... considera este código:


$nombre = " Pedro ";
// Concatenacion
echo "Hola " . $nombre . ", bienvenido.";
echo "Hola $nombre";
echo "Hola {$nombre}";


Ambas tres serian correctas, aunque yo siempre abogo por la ultima de ellas, me parece mas limpia y correcta, ya que no tengo que salir de esa cadena y concatenar otra, simplemente lo "embebo" todo en esa cadena.

Pero hay otro modo de embeber HTML dentro de PHP o lo inverso... se trata de la sintaxis "heredoc". La sintaxis de este tipo seria:

$variable = <<< IDENTIFICADOR
[Contenido de la cadena]
IDENTIFICADOR;


Esta manera auna los beneficios de la sintaxis del echo y el HTML embebido, como podemos ver en el siguiente ejemplo:


$html = <<< FIN
<html>
<head></head>
<body>
<p id="bienvenido">Hola {$nombre}</p>
</body>
</html>
FIN;


De este modo no necesitamos escapar los caracteres, y el contenido de la cadena es tratado exactamente igual que con echo "asdasd"; pero con el beneficio de que no hay que escapar el contenido y además no hay que preocuparse de que el código resultante salga en la misma linea (recuerda que usando echo debes meter el caracter de nueva linea para que el código HTML resultante salga en lineas diferentes).

De todos modos, esta sintaxis tiene una peculiaridad:

- La cadena no ha de estar precedida de ningun espacio en blanco, tabulador, etcetera... ha de estar en la primera posicion de la linea, al igual que el IDENTIFICADOR de cierre.

Espero que os haya servido de utilidad, cualquier sugerencia será bienvenida.


Comentarios

Comentar


Recordar datos

Miniblog

Favoritos

Tira e.c.o.l.*

Tira e.c.o.l.*

sputnik 2004-2005
Algunos derechos reservados.


Suscribir este blog en Bloglines

Blogarama

No a las patentes de software

LaInformacion.com lainformacion.com - Medio Oficial de los Premios Bitacoras 2009