50 consejos para programar mejor en PHP

Code PHP

Aquí estamos de nuevo para daros unos pequeños consejos para programar mejor en PHP. Estos consejos abarcan todo, es decir, mejorar el rendimiento de código, evitar variables como «$pepito», … Así pues, empieza los 50 consejos para programar mejor en PHP: 

  1. Inicializar las variables antes de utilizarlas.
  2. Incrementar una variable global es mucho mas lento que hacerlo de una variable local.
  3. Crear variables globales, ralentiza tu código.
  4. Usar ip2long() y long2ip() para almacenar direcciones IPs como enteros en lugar de cadenas en la base de datos. Con esto, reducimos el espacio de almacenamiento en cuatro veces, y facilitamos cálculos de un rango, y aceleramos las búsquedas y ordenaciones.
  5. Para comprobar si existe un dominio, utilizaremos checkdnsrr().
  6. Si usas PHP 5 con MySQL 4.1 o superior, deberías utilizar las funciones de mysqli_ en lugar de mysql_, ya que son más rápidas y puedes utilizar hasta sentencias preparadas.
  7. Utilizar el operador ternario en condiciones cortas.
  8. Utilizar PEAR para evitar reprogramar código que ya está hecho.
  9. Sustituir $i++; por ++$i;
  10. Sustituir $i += 1; por ++$i;
  11. Sustituir rand($min,$max); por mt_rand($min,$max);
  12. Sustituir $i = 0; while($array[$i]){ ++$i; } por $i = 0; $count = count($array); while($i < $count){ ++$i; }
  13. Evitar que el sistema proporcione errores al usuario utilizando error_reporting(0). Son útiles al programar, pero se debería deshabilitar cuando publicamos la web.
  14. Utilizar gzcompress() y gzuncompress() para almacenar cadenas largas en la base de datos, esto puede ahorrarnos hasta un 90% de espacio.
  15. Devolver múltiples valores de una función pasándolos mediante referencia.
  16. Comprender el peligro de utilizar magic_quotes y la inyección SQL.
  17. Utilizar Smarty o algún otro motor de plantillas para separar la lógica de la presentación, ahorrarás muchos dolores de cabeza.
  18. Utilizar echo en lugar de print como salida de resultados.
  19. Cuando uses echo, separa los strings por comas mejor que con puntos, es más rápido. Esto solo funciona con echo.
  20. Sustituir ob_start(); echo ‘..’; ob_end_flush(); por ob_start(); print ‘..’; ob_end_flush();
  21. No escribir texto HTML utilizando echo o print, sino que deberíamos escribirlo directamente.
  22. Sustituir echo “$variable cadena “; por echo $variable.’cadena’;
  23. Sustituir include(’output/contain_no_php’); por readfile(’output/contain_no_php’);
  24. Emplear variables en lugar de contantes.
  25. Utilizar las funciones existentes en PHP antes de crearla nosotros mismos. Si está hecho, para que repetirlo?
  26. Las operaciones en formato expandido, suelen ser más lentas.
  27. Utilizar === en los if, es decir, triple =.
  28. Cuando comparemos una variable con un valor constante, mejor colocar primero el valor constante y luego la variable.  if(10 == $x)
  29. Manejar a como queramos los errores utilizando set_error_handler(’nombre_funcion’);
  30. Desactiva el acceso a ficheros remotos, en php.ini: allow_url_fopen = Off
  31. Desactiva register_globals en el php.ini: register_globals = Off
  32. Restringe a que ficheros puede acceder el PHP en el php.ini: open_basedir = /www/ficheros
  33. Activa el modo seguro de PHP en el php.ini: safe_mode = Off safe_mode_gid = On
  34. Cuando activamos el modo seguro, no podremos ejecutar los ficheros binarios. Pero para ello, deberemos indicar donde se sitúan dichos binarios que si se podrán ejecutar, en php.ini: safe_mode_exec_dir = /www/ejecutables
  35. Tampoco está permitido acceder a variables de entorno en el modo seguro, pero se puede incluir una lista (separada por comas) de prefijos que se permiten para estas variables, en php.ini: safe_mode_allowed_env_vars = PHP_
  36.  Evitar la ejecución de la shell, en php.ini: disable_functions = system, exec, shell_exec, passthru, pcntl_exec, putenv, proc_close, proc_get_status, proc_nice, proc_open, proc_terminate, popen, pclose, set_time_limit, ini_alter, virtual, openlog, escapeshellcmd, escapeshellarg, dl, curl_exec, parse_ini_file, show_source.
  37. Trata de tener la mayoría de la base de datos en memoria, usando para ello memcached.
  38. Utiliza clases para realizar los accesos a la base de datos, por ejemplo PEAR DB, es más seguro y flexible a la hora de cambiar de una base de datos, por ejemplo de MySQL a SQLite.
  39. Require es más rápido que require_once, lo mismo pasa con include e include_once.
  40. Comprobar que todas las variables, sobre todo las obtenidas mediante $_GET y $_POST son válidas, para ello puedes emplear expresiones regulares. Así evitaremos errores futuros en el código.
  41. No poner a los archivos importantes nombres simples como config.php, etc… ni en carpetas simples como includes/config.php y cosas así.
  42. En las consultas MySQL seleccionar sólo los campos que necesitemos extraer de la base de datos, no todos.
  43. Si solo necesitamos el primer valor de una consulta a la base de datos, utilizar LIMIT 1.
  44. Utiliza mysql_fetch_assoc para extraer los resultados de una variable al realizar una consulta MySQL, ya que al utilizar mysql_fetch_array se extrae la información en un array el doble de largo.
  45. Utiliza valores por defectos y NOT NULL en tu base de datos, hará las consultas e inserciones más rápidas.
  46. Intenta evitar concatenación de texto.
  47. Utiliza la comilla simple (’) en vez de la comilla doble (”) siempre que no vayas a usar variables dentro, la comilla doble hace que el intérprete analice lo que hay dentro de las comillas, además a la hora de concatenar es más rápido también utilizar comillas simples.
  48. Indica el valor máximo para tus bucles for fuera del bucle en vez de dentro del bucle, porque si no, se evaluará la expresión en cada pasada del bucle.
  49. Libera variables siempre que puedas, sobre todo arrays pesados.
  50. Cada vez que llamas a una página se llama al compilador y se vuelve a procesar, aunque no haya cambiado. Si se cachean los objetos de PHP, la primera vez se compilaría y la siguiente se usaría la compilada. Una herramienta gratuita que nos permite realizarlo es Turck MMCache for PHP.

 

Espero que os sean útiles estos «mini» consejos de programación PHP. Seguramente muchos los habréis pasado por alto alguna vez. Si tenéis más aportaciones, las iré añadiendo!!