lunes, agosto 27, 2007

50 consejos utiles para ser mejor programador en PHP

navegando por el blog de meth me encontre que escribio 50 consejos muy utiles que todo programador en PHP debe considerar para que su programación sea mas estructurada y optimizada, yo algunos puntos ya los considero en mi programación.

aqui les dejo el listado


  1. Inicializa las variables antes de utilizarlas
  2. Incrementar una variable global es dos veces mas lento que una variable local
  3. Declarar una variable global realentiza tu script
  4. Usar ip2long() y long2ip() para almacenar direcciones IPs como enteros en lugar de cadenas en la base de datos. Esto reducirá el espacio de almacenamiento en cuatro veces (15 bytes por carácter char(15) contra 4 bytes del entero), además de facilitar el calcular cuanto una dirección entra en un rango, y acelerar las busquedas y ordenaciones.
  5. Validar direcciones de email mediante checkdnsrr(). Es una función de PHP que comprueba si un dominio existe.
  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. Utiliza el operador ternario
  8. Utilizar PEAR para no tener que programar funciones ya programadas
  9. Prevenir que el sistema proporcione mensajes de error al usuario utilizando la función error_reporting(0), cuando programamos los mensajes de error son útiles, pero el usuario final no debería verlos.
  10. Utilizar gzcompress() y gzuncompress() para almacenar cadenas largas en la base de datos, esto puede ahorrarnos hasta un 90% de espacio
  11. Devolver múltiples valores de una función pasándolos mediante referencia.
  12. Comprender el peligro de utilizar magic_quotes y la inyección SQL
  13. Utilizar Smarty o algún otro motor de plantillas para separar la lógica de la presentación, ahorrarás muchos dolores de cabeza
  14. Sustituir $i++; por ++$i;
  15. Sustituir $i += 1; por ++$i;
  16. Sustituir rand($min,$max); por mt_rand($min,$max);
  17. Sustituir $i = 0; while($array[$i]){ ++$i; } por $i = 0; $count = count($array); while($i < $count){ ++$i; }
  18. Utilizar echo en lugar de print como salida de resultados
  19. Sustituir ob_start(); echo '..'; ob_end_flush(); por ob_start(); print '..'; ob_end_flush();
  20. Escribir una cadena con etiquetas HTML o algún otro texto fijo directamente, sin utilizar echo ni print
  21. Sustituir include('output/contain_no_php'); por readfile('output/contain_no_php');
  22. Sustituir echo "$variable cadena "; por echo $variable.'cadena';
  23. Emplear variables en lugar de contantes
  24. Siempre utilizar una función existente en PHP antes de crearla por nosotros mismos
  25. Las operaciones en formato expandido son habitualmente más lentas
  26. Utilizar triple = para los if
  27. En un if siempre que hagamos una comparación de una variable con un valor constante, colocar primero el valor constante que la variable. Ejem: if(10 == $x)
  28. Crea tu propios manejadores de error, utiliza set_error_handler('funcion_que_maneja_errores');
  29. 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
  30. Desactiva el acceso a ficheros remotos, en php.ini: allow_url_fopen = Off
  31. Desactiva también register_globals, en php.ini: register_globals = Off
  32. Restringe a qué ficheros puede acceder PHP, en php.ini: open_basedir = /www/ficheros
  33. Activa el modo seguro en PHP, en php.ini: safe_mode = Off safe_mode_gid = On
  34. Al activar el modo seguro no se pueden ejecutar ficheros binarios, por lo que deberás indicar donde se situan los binarios que si se pueden 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 inluir 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 BD 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 unab ase de datos, por ejemplo de MySQL a SQLite
  39. Require es más rapido 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
  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. Sí sólo quieres extraer una fila utiliza LIMIT 1, para que al encontrarla no siga buscando más
  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 no concatenar texto cuando no sea necesario
  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. Cuando uses echo, separa los strings por comas mejor que con puntos, es más rápido. Esto solo funciona con echo
  49. 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
  50. Libera variables siempre que puedas, sobre todo arrays pesados.

descubierto en meth blog

No hay comentarios.: