Consejos para programar mejor en PHP

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:

Consejos para programar mejor en PHP

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.

Victor

Me llamo Víctor López y nací en Zaragoza el 16 de Diciembre de 1984.Esta web la monté exactamente el 23 de Mayo del 2005 con la idea de publicar mis experiencias personales, cosas curiosas que veía a mi alrededor (tanto en Internet como en mi vida) y el poder tener mi propio espacio web en la red. Si quieres puedes ver las estadísticas del año 2010.Ingeniero Superior en informática (terminé la carrera en 2006), desde pequeño ya estaba totalmente convencido a lo que me iba a dedicar en mi vida, la informática. Quizás porque mi padre tenía un Spectrum y me pegaba horas trasteándolo o quizás porque desde pequeño siempre me han gustado “los chismes”. El caso es que empezó a gustarme este mundo de la informática.Profesionalmente soy Analista-Programador Senior en PHP y me dedico al análisis, desarrollo y programación de páginas web y al desarrollo de aplicaciones (principalmente web en PHP, empecé a programar en el año 2002 en PHP), creación, alojamiento, optimización (diseño, SEO, publicidad), puesta en marcha de webs y potenciándolas.Actualmente soy Lead Integration Engineer en EnGrande.com – BudGetPlaces.com, además de formar parte de Homein.com (anteriormente he trabajado en Atrapalo.com, Camyna.com y Sync.es).Socio fundador de Coompy.es Alquilar habitación – Compartir piso.Partidario del software libre y usuario asiduo de Ubuntu y CentOS. Fui usuario de Mac pero ahora ya he vuelto al buen camino con Linux (Ubuntu distro).Sobre mi filosofía de vida, te invito a que leas este artículo: “Tu eres el resultado de ti mismo“. Si lo lees, entenderás mi punto de vista de la vida.Intento estar lo más lejos posible de la monotonía y considero mi trabajo como un hobby, me gusta aprender cosas nuevas cada día y afrontar nuevas metas y proyectos.En mi tiempo libre me gusta practicar cualquier deporte (el fútbol especialmente), me gusta competir (sea el ámbito que sea), los coches, las buenas películas/series y viajar.Personalmente considero que lo primero en esta vida es la salud y las personas, dejando atrás otras cosas, como puede ser el dinero, la fama y todas esas chorradas, que cuanto más las tienen las personas, más las quieren y menos les importan los demás. Y creo que el respeto y educación es fundamental.Pues eso es todo, un breve resumen de mi persona.Si te quieres anunciar en mi blog, contactar conmigo ya sea para la contratación de mis servicios, ofertas, agradecimientos, quejas, insultos, amenazas y/o similares, puedes mandarme un correo cuando quieras.Mi correo personal de contacto es: http://helektron.com/contacto-personal/Puedes seguir este blog por Google Plus, Facebook, Twitter, RSS y por mail.

7 comentarios en “Consejos para programar mejor en PHP

  • el 24-octubre-2012 a las 4:24 pm
    Permalink

    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 22-octubre-2012 a las 1:08 am
    Permalink

    El post no tiene precio, enhorabuena!!

  • el 3-julio-2011 a las 3:25 am
    Permalink

    oiga parce muy bueno lo que iso nos ayudara atodos los que utilizamos php

  • el 22-mayo-2011 a las 5:07 am
    Permalink

    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).

  • el 5-junio-2010 a las 6:06 am
    Permalink

    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

  • el 31-diciembre-2009 a las 3:29 pm
    Permalink

    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

  • el 30-septiembre-2008 a las 12:45 am
    Permalink

    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!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *