Si programáis en PHP os aconsejo leeros estos consejos para mejorar vuestra programación en PHP. El artículo completo donde aparecen este recopilatorio de consejos es: Mejorando nuestra programación y estos son los consejos que todo programador en PHP debe y tiene que tener en cuenta a la hora de programar:
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.
Hombre, no estoy de acuerdo con la 14. la pre-incrementacion o la post-incrementacion son cosas que se utilizan bastante en el ámbito de la programación, no es algo que se use para que quede mas bonito.
El post no tiene precio, enhorabuena!!
oiga parce muy bueno lo que iso nos ayudara atodos los que utilizamos php
Muy bueno el informe y muy útil, sobretodo algo que programadores nuevos no tienen en cuenta que es liberar memoria, tal cual lo dijo Daniel G Zylberberg: «Desinstanciar clase despues de usarla para liberar memoria:
-unset($clase);» (también en variables y arrays).
Bueno mas que nada queria felicitarte por el post, yo estoy programando en php y la verdad que me encanta todo esto ya que soy bastante nuevo y estoy muy interesado en programar prolijamente. salu2
Excelente!
Hago mi pequeño aporte a medida que me viene a la mente:
Desinstanciar clase despues de usarla para liberar memoria:
-unset($clase);
-usar switch() en vez de miles de if..else sucios como varios hacen.
-Manejar las excepciones con try y catch para que el programa sea mas estable.
-Pesar antes de hacer una clase nueva si en verdad se justifica tanto.
Muchas veces conviene hacer 3 funciones y no tener que hacer una clase, las 3 funciones, instanciarlo y todo eso, ganás que el codigo es mas corto.
-Si tenés que usar 50 metodos, tratá de separarlo en diferentes clases.
Vas a saber mejor lo que hace cada funcion y cuando tengas que reutilizar el codigo, no vas a tener que instanciar una clase enorme por 3 funciones.
-Las funciones o métodos tienen que tener hasta un maximo de 10 lineas.
-Los nombres de las funciones no tienen que ser jeroglificas, tienen que explicar lo que hacen con el minimo de palabras.
Pensá que talvez de acá a 2 años vas a tener que modificar algo que vos mismo hiciste y es mucho mas facil entender que hace una funcion cortita que una funcion compleja que hace muchas cosas.
Y ni que hablemos si hay que hacerle un cambio urgente por que justo te pidieron que agregues algo.
-tratar de usar webservices.
-No repetir codigo.
-No optimizar antes de que lo necesites.
Las plataformas crecen y hay que implementar funcionalidades.
Si está optimizado, y hay que agregar cosas, muchas veces hay que reescribir el codigo por que te quedó «muy cerrado» y no podes tocarlo por que se rompe todo.
Lo mejor es optimizar a medida que lo vayas necesitando.
salu2
Muy bueno, la verdad sirve muchisimo, ya que en proyectos grande, mas como sistemas webs, es muy importante la velocidad de procesamiento de los script, y si remplazamos todas las comillas dobles por simples (en los lugares que se pueda), y aplicando estos consejos, se llega a muy buena velocidad.
Gracias!