PHP-tutorial-01

¿Te gustaría aprender PHP desde cero?
Tenemos los cursos que necesitas.¡Haz clic aquí!

PHP tiene bastante mala prensa. En las conferencias no hay ponente que quiera ser cool que no lance su pullita hacia PHP y los phperos. Y lo cierto es que las múltiples atrocidades que los desarrolladores de PHP cometen (cometemos) envalentonados por su flexibilidad y sencillez tienen buena parte de culpa. Sin embargo si lleva tantos años siendo el lenguaje más utilizado para el desarrollo web, por algo será. En las siguientes líneas te daremos algunos trucos, consejos y buenas practicas de PHP para que tu código sea mejor, tu vida profesional más agradable y puedas ir a los congresos de desarrolladores con la cabeza alta y sin esconder el elefante.

Desarrolla con el reporting de errores activado

Uno de las grandes némesis de los desarrolladores web en general y los phperos en particular es el «pantallazo blanco de la muerte». Un error 500 que no da ninguna información y que puede resultar tremendamente frustrante. Para evitarlo, sin tener que modificar el fichero php.ini, durante la fase de desarrollo tan sólo es necesario incluir las dos siguientes líneas al principio del código:

DATA HOSTED WITH
  1. error_reporting(E_ALL);
  2. ini_set(‘display_errors’, 1);

Evita la inyección SQL

Posiblemente una de las causas de la mala prensa de PHP sean los agujeros de seguridad (Cross-Site Scripting, Cross-Site Request Forgeries…) que se te pueden colar en cuanto no seas un poco meticuloso. De todos ellos el más conocido (y el más sencillo de prevenir) es el de la SQL Injection: «la inserción de código SQL invasor con el fin de alterar el funcionamiento normal del programa y lograr que se ejecute la porción de código invasor en la base de datos» con funestas consecuencias.

¿Cómo lo evitamos? Hay varias maneras pero la más sencilla es escapando siempre cualquier variable (y no sólo los inputs del usuario) que vayamos a utilizar contra la base de datos. Tal que así:

DATA HOSTED WITH
  1. $query_result = mysql_query(«SELECT * FROM ex_table WHERE ex_field = « .mysql_real_escape_string($ex_field) . ««);

¿Cómo? ¿Usando el obsoleto driver de MySQL en vez de MySQLi o PDO? ¿Y haciendo las consultas a pelo? Tranquilidad, no adelantemos acontecimientos de otros trucos y consejos que vendrán a posterior.

Jubila el driver mysql

No estamos en 2005 ni seguimos usando PHP4 (o por lo menos eso espero) por lo que ya nos podemos deshacer del driver mysql para conectar con, mira tu por donde, MySQL. Podemos apostar por el driver mysqli (sobretodo en su forma orientada a objetos) o, mejor aún, caer en los fornidos brazos de PDO.

PDO, acrónimo de PHP Data Object, es una extensión de PHP que proporciona una capa de abstracción para la conexión con distintos gestores de bases de datos (porque en PHP también puedes trabajar contra otras bases de datos que no sean MySQL aunque a veces no lo parezca). Vamos, salvando las distancias puede equipararse a Hibernate de Java (que me perdonen los javeros si estoy diciendo alguna incongruencia) y su uso es tan sencillo como el que te mostramos a continuación:

DATA HOSTED WITH
  1. try {
  2.     $conn = new PDO(‘mysql:host=localhost;dbname=database’, $user, $pass);
  3.     $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  4. } catch(PDOException $e){
  5.     echo «ERROR: « . $e->getMessage();
  6. }

Abraza cURL

Vale, cuando necesitas recuperar un fichero de otro servidor, file _ get _ contents() es potente, sencillo de utilizar y te saca del apuro pero no tienes nada de control sobre lo que ocurre y la flexibilidad también es escasa. Vamos, es como tener a Drenthe en tu equipo. Por eso mejor tirar de la popular extensión cURL (asegurate de tenerla instalada y activada antes de usarla): más potente, flexible y con decenas de opciones. Un ejemplo de uso de cURL puede ser tan sencillo como el siguiente:

DATA HOSTED WITH
  1. $c = curl_init();
  2. curl_setopt($c, CURLOPT_URL, $url);
  3. curl_setopt($c, CURLOPT_TIMEOUT, 15);
  4. curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
  5. $content = curl_exec($c);
  6. $status = curl_getinfo($c, CURLINFO_HTTP_CODE);
  7. curl_close($c);

Abres una conexión con una url durante un tiempo determinado y recuperas el contenido de la misma además del status de la operación y sin olvidarnos de cerrarla. Luego las opciones que tienes para complicarlo todo son enormes, claro (cabeceras, parámetros por POST, autenticación, diferentes outputs, conexiones FTP, conexiones SSH, encriptación…).

[Bola extra] Si cURL se te queda corto siempre puedes tirar de librerías como GuzzleHTTP.

Usa las funciones _once() con precaución

A la hora de llamar a otros ficheros, librerías o clases podemos optar por la función include() o la función require(). La primera da un warning de no encontrar el fichero y sigue la ejecución. La segunda da un error fatal y para la ejecución. Bien, hasta aquí todo claro, PHP 101 de manual.

Sin embargo también tenemos la opción de utilizar las funciones include _ once() y require _ once(), que tienen la misma funcionalidad pero evitan que los ficheros, clases o librerías cargados puedan cargarse de nuevo causando duplicidades y estados no deseados en el código. Esto está genial a priori pero lo consiguen a costa de una disminución de rendimiento bastante notoria. Por lo tanto casi mejor ocuparte tu mismo, siempre que puedas, de evitar estas duplicidades revisando bien el código y todas las llamadas en el mismo.

¿Te gustaría aprender PHP desde cero?
Tenemos los cursos que necesitas.¡Haz clic aquí!
About Author

NGuerrero

0 0 votos
Article Rating
Suscribir
Notificar de
guest
0 Comments
Comentarios.
Ver todos los comentarios
0
¿Te gusta este articulo? por favor comentax