10 principios de los Masters de PHP


Con la amplia adopción de PHP, es casi demasiado fácil encontrar un script o snippet que haga exactamente lo que necesitas. Desafortunadamente, no hay un filtro respecto de lo que es una “mejor práctica” y de lo que, bueno, no es tan bueno al esribir un script de PHP. Necesitamos fuentes de confianza, que han probado que tienen un sólido conocimiento de las mejores prácticas en PHP.

Necesitamos Masters en PHP que nos muestren los mejores principios a seguir para una programación PHP de grado superior.

1. Usa PHP solo cuando lo requieras – Rasmus Lerdorf

No hay mejor recurso que el creador de PHP para saber de lo que es capaz PHP. Rasmus Lerdorf creó PHP en 1995, y desde entonces el lenguaje se ha extendido como el fuego a través de la comunidad de desarrolladores, cambiando la faz de la Internet. Sin embargo, Rasmus no creó PHP con esa intención. PHP se creó a partir de la necesidad de resolver problemas de desarrollo web.

Y como muchos proyectos de código abierto que se ha vuelto populares, la motivación nunca fue filosófica o siquiera narcisista. Fue solamente un caso de necesitar una herramienta para resolver problemas del mundo real relacionados con la Web. En 1994 las opciones eran mucho muy limitadas en cuanto a herramientas
de desarrollo Web

Sin embargo, no puedes usar PHP para cualquier cosa. Lerdorf es el primero en admitir que PHP es solo una herramienta en tu caja, y que incluso tiene limitaciones

Usa la herramienta correcta para el trabajo. He visto compañías que han comprado completamente PHP, implementándolo absolutamente en todos lados, pero nunca fue creado como un lenguaje de propósito general apropiado para cualquier problema. Se siente más en casa como el lenguaje de scripts de front-end para la Web

Tratar de usar PHP para todo no es eficiente, y ciertamente no es el mejor uso de tu tiempo como desarrollador web. No temas usar otros lenguajes si PHP no se adecúa a tu proyecto

2. Usa muchas tablas con PHP y MySQL para escalabilidad – Matt Mullenweg

Nadie necesita cuestionar la autoridad de Matt Mullenweg sobre PHP. Él (junto con una comunidad rabiosa) desarrolló el sistema de blogueo más popular del planeta: WordPress. Después de crear WordPress, Matt y compañía lanzaron el estelar WordPress.com, un sitio basado en el código base del software de blogueo WordPress MU para blogs múltiples. Al momento de escribir esto, WordPress.com hospeda más de 4 millones de blogs, y sus usuarios han escrito más de 140,000 entradas hoy (puedes ver estadísticas más interesantes sobre el uso de WordPress aquí).

Si alguien sabe cómo escalar un sitio web, es Matt Mullenweg. En 2006 Matt estudió la estructura de la base de datos de WordPress y explicó por qué WordPress MU usa una tabla de MySQL separada para cada blog, en lugar de usar una tabla gigante “monolítica” para todos los blogs.

Probamos este enfoque para MU, pero encontramos que era muy costoso de escalar pasando de cierto punto. Con estructuras monolíticas te estrellas con tu hardware. En MU los usuarios están divididos y pueden ser particionados fácilmente; por ejemplo, en WordPress.com tenemos a los usuarios particionados entre 4096 bases de datos, lo que permite escalar de forma “barata” y eficientemente a cientos de miles y hasta millones de usuarios y niveles extremadamente altos de tráfico.

El que sea posible migrar las tablas permite al código, y al final a los blogs, a ejecutarse más rápido y escalarse más fácilmente. Junto con algún cacheo pesado y uso inteligente de la base de datos, Matt ha mostrado que sitios populares como Facebook y WordPress.com pueden ejecutarse con PHP y manejar esa carga increíble de tráfico.

3. Nunca, NUNCA, confíes en tus usuarios – Dave Child

Dave Child es el creador del sitio Added Bytes que contaba con sus excelentes hojas de trucos para muchos lenguajes de programación. Dave ha trabajado para muchas empresas de desarrollo en el Reino Unido y se ha establecido como una autoridad en el mundo de la programación.

David ofrece un sabio consejo a la hora de escribir código seguro en PHP: No confíes en tus usuarios. Ellos sólo pueden hacerte daño.

Así que la regla de oro de todo el desarrollo web, y no puedo enfatizar lo suficiente, es: Nunca, nunca, confíe en sus usuarios. Asuma que cada pieza de datos que su sitio web recoge de un usuario contiene código malicioso. Siempre. Eso incluye datos que usted piensa que ha comprobado con validación del lado del cliente, por ejemplo utilizando JavaScript. Si usted puede manejar eso, vas por un buen inicio. Si la seguridad de PHP es importante para usted, este único punto es el más importante por aprender.

Dave continúa dando ejemplos concretos de prácticas seguras en las partes unodos y tres de su serie “Escribiendo PHP seguro”. Pero su último legado es el siguiente:

Por último, sea total y absolutamente paranoico. Si usted asume que su sitio nunca estará bajo ataque, o enfrentará algún problema de cualquier tipo, entonces cuando algo vaya mal con el tiempo, usted estará en cantidades enormes de problemas. Si, por el contrario, usted asume que cada uno de los visitantes a su sitio va por usted y usted está permanentemente “en guerra”, se ayudará usted mismo a mantener su sitio seguro, y estará preparado en caso que las cosas salgan mal.

4. Invierte en cachear PHP – Ben Balbo

Ben Balbo ha estado escribiendo para Site Point, un sitio de tutoriales muy respetado por desarrolladores y diseñadores. Está en el comité tanto del grupo de usuarios de PHP de Melbourne como  del Club de Desarrolladores de Código Abierto, así que sabe una cosa o dos acerca del lenguaje. No es ninguna sorpresa, con el background de Ben como desarrollador y entrenador PHP, que él recomiende poner un poco más de reflexión y preparación en el almacenamiento en caché de PHP.

Si usted tiene un sitio web ocupado y predominantemente estático -tal como un blog- que es administrado a través de un sistema de gestión de contenidos, es probable que requiera poca alteración, y aún así puede beneficiarse de las mejoras enormes de rendimiento resultantes de una pequeña inversión de tiempo. Configurar el almacenamiento en caché para un sitio más complejo que genera contenido en una base por usuario, como por ejemplo un portal o un sistema de comercio electrónico, será un poco más complicado y llevará mucho tiempo, pero los beneficios son todavía claros.

Hay muchas técnicas diferentes para almacenamiento en caché en PHP, y Ben toca algunas de las más usuales en el artículo, como:

  • Llamadas a funciones almacenadas en caché
  • Colocando encabezados de expiración
  • Almacenando en caché las descargas de archivos
  • Almacenamiento de plantillas
  • Cache_Lite

y muchas otras. Dada la naturaleza de los lenguajes dinámicos como PHP, el almacenamiento en caché es crítico para guardar aquellas partes de la página que a las que se accede frecuentemente y no cambian demasiado.

5. Agiliza el desarrollo en PHP con un IDE, plantillas y snippets – Chad Kieffer

Cuando Chad Kieffer no está ocupado mejorando interfaces de usuario y administrando bases de datos, está dando consejos de conocimientos especializados de su blog 2 Tablespoons. Debido a la amplitud de campo de la experiencia de Chad, a menudo es capaz de ver el panorama que otros programadores no podrían, específicamente cuando se trata de el enfoque holístico que Chad necesita para el desarrollo de un sitio web. Él se especializa en todos los aspectos del proceso de desarrollo, por lo que cualquier idea que él pueda brindar para la elaboración de un proyecto completo va a ser útil.

Chad considera que el uso de un IDE como Eclipse PDT (paquete de desarrollo de PHP de Eclipse) con una mezcla de plantillas y fragmentos (snippets) realmente puede acelerar el tiempo de entrega en un proyecto.

Las agendas apretadas, las listas de tareas largas, y las fechas límite hacen que sea difícil para los desarrolladores familiarizarse con algunas de las características avanzadas que sus herramientas proporcionan. Es una lástima, porque algunas características, como las plantillas Eclipse, de verdad pueden reducir el tiempo y los errores de codificación.

El sentido común dice que en cualquier momento que usted pueda automatizar una tarea, más rápido podrá obtener el proyecto terminado. Lo mismo ocurre con la teoría de Dan. Al tomar el tiempo para crear plantillas que podrá utilizar una y otra vez, usted ahorrará muchísimo tiempo automatizando las partes repetitivas de la codificación.

Al utilizar un IDE como Eclipse y el paquete PDT, verá que el tiempo de desarrollo se acelerará de forma incremental. El IDE automáticamente cerrará paréntesis y llaves, añadirá esos puntos y comas que faltan e incluso le permitirá depurar dentro del editor, sin tener que subir nada al servidor.

Chad tiene un tutorial ingenioso sobre cómo empezar con Eclipse PDT y los beneficios de un entorno de desarrollo en general, por si usted está interesado.

6. Haz un mejor uso de las funciones de filtrado de PHP – Joey Sochacki

Aún cuando Joey Sochacki no sea tan reconocido como Matt Mullenweg en la comunidad PHP, es un desarrollador web experimentado y comparte tips que ha ido recogiendo a lo largo del camino en su blog Devolio.

Joey ha encontrado que aún cuando hay mucho que filtrar cuando escribes código PHP, no muchos programadores hacen uso de las funciones de filtrado de PHP.

Filtrado de datos. Todos tenemos que hacerlo. A muchos de nosotros, si no es que a todos, nos fastidia el hacerlo. Sin embargo, muchos no tenemos conocimiento de las funciones filter_* de PHP, que nos permiten hacer cualquier tipo de filtrado y validación. Usando las funciones filter_* de PHP podemos validar e higienizar tipos de datos, URLs, direcciones de correo electrónico, direcciones IP, eliminar caracteres incorrectos y más, todo con relativa facilidad.

El filtrado puede ser complicado, pero esta guía puede ayudar mucho. Con la ayuda de Joey usted aprenderá cómo instalar dichos filtros y validar casi cualquier cosa, aprovechando el poder de filtrado de PHP.

7. Usa un framework PHP – Josh Sharp

Siempre ha habido un debate sobre si se debe utilizar un framework PHP como ZendCakePHPCodeIgniter, o cualquier otro. Hay ventajas y desventajas de utilizar uno, y muchos desarrolladores tienen sus propias opiniones sobre si se debe o no ir por este camino.

Josh Sharp es un desarrollador web que hace su pan y mantequilla de la creación de sitios web para sus clientes. Es por ello que usted debe confiar en él cuando dice que es una buena idea usar un framework PHP para ahorrar tiempo y eliminar errores en la programación. ¿Por qué? Josh cree que es debido a que PHP es muy fácil de aprender.

Pero la facilidad de uso de PHP es también su perdición. Debido a que hay menos restricciones en la estructura del código que escribes, es mucho más fácil escribir código malo. Pero hay una solución: utilizar un framework.

Los frameworks PHP ayudan a estandarizar la forma de programar, y pueden ahorrar mucho tiempo en el proceso de desarrollo. Puedes leer más sobre las ventajas de utilizar un framework PHP en el blog de Josh.

8. No uses un framework PHP – Rasmus Lerdorf

Contrariamente a la creencia de Josh de que uno debe utilizar un framework PHP, Rasmus Lerdorf, el padrino del mismo PHP, cree que los frameworks no son tan grandiosos. ¿Por qué? Debido a que tienen un desempeño mucho más lento que el PHP simple.

Durante la presentación de Rasmus en la Drupalcon 2008, Rasmus comparó los tiempos de respuesta a una página PHP con un simple ejemplo “Hola, Mundo”, y lo comparó con algunos frameworks PHP (diapositivas 24-32), y demostró que los frameworks PHP son mucho más lentos que solo con PHP.

Usted puede escuchar o ver toda la presentación, donde Rasmus muestra las pérdidas de rendimiento con frameworks PHP. En resumen, Rasmus muestra que el rendimiento sufre un golpe importante cuando se utiliza un framework PHP en lugar de utilizar PHP puro.

[Nota: Si usted tiene que utilizar un framework PHP, a Rasmus le gusta más que otro CodeIgniter, ya que es “menos como framework”]

9. Usa procesamiento en lotes – Jack D. Herrington

Jack Herrington no es ajeno a PHP y el mundo del desarrollo. Además de escribir más de 30 artículos para la prestigiosa IBM developerWorks, Jack también ha publicado libros de programación como PHP Hacks. Jack es un experto genuino.

Herrington recomienda utilizar el procesamiento por lotes y cron para hacer frente a las tareas que se puedan procesar en segundo plano. Los usuarios de Web no quieren esperar mucho tiempo para que las tareas se completen en la web. Hay algunos trabajos que requieren más tiempo que son mucho más adecuados para ser realizados en segundo plano.

Ciertamente, en algunos casos pequeños, es un poco más fácil disparar de un subproceso ayudante para manejar pequeños trabajos. Pero es fácil ver que con el uso de herramientas convencionales – cron, MySQL, PHP estándar orientado a objetos, y PEAR :: DB – la creación de trabajos por lotes en aplicaciones PHP es fácil de hacer, fácil de implementar y fácil de mantener .

Jack cree en la simplicidad, y en lugar de utilizar threading en servidores, utiliza la simple combinación de cron, PHP y MySQL para procesar tareas en segundo plano.

He hecho ambas cosas, y creo que cron tiene la ventaja del principio “Keep It Simple, Stupid” (KISS). Mantiene el procesamiento simple en segundo plano. En lugar de tener una aplicación de procesamiento de tareas multiproceso que corre para siempre, y por lo tanto, nunca puede perder memoria, usted tiene un archivo por lotes simple que comienza cron. El script determina si hay algo que hacer, lo hace, a continuación, sale. No hay necesidad de preocuparse por las pérdidas de memoria. No hay necesidad de preocuparse por un estancamiento de subprocesos o quedar atrapados en un bucle infinito.

10. Enciende el informe de errores de inmediato – David Cummings

David Cummings dirige su propia compañía de software que se especializa en sistemas de gestión de contenidos, y ha ganado varios premios. Si alguien sabe cómo desarrollar una aplicación PHP de manera eficiente, ese es Dave.

David escribió en un artículo de SitePoint sobre los dos tips de PHP que deseaba haber aprendido en el principio. Uno de los tips: Encienda el informe de errores de inmediato. Se ahorrará una gran cantidad de tiempo en el largo plazo.

La cosa más importante que le digo a las personas que utilizan PHP es encender los informes de errores a su nivel máximo. ¿Por qué iba yo a querer hacer esto? En general, el informe de errores se ha fijado en un nivel que oculta muchas pequeñas cosas como:

  • declarar una variable antes de tiempo,
  • referenciar una variable que no está disponible en ese segmento de código, o
  • utilizar un define que no se ha establecido.

Estos factores podrían no parecer gran cosa – hasta que desarrolle programas estructurados u orientados a objetos con funciones y clases. Con demasiada frecuencia, el escribir código sin el informe de errores establecido en alto nivel le costaría horas a medida que valida funciones largas que no trabajaron porque una variable estaba mal escrita o no era accesible.

El informe de errores puede hacer la búsqueda de la razón de un error mucho más fácil. Un pequeño error en el código se puede identificar rápidamente si los informes de errores de PHP están activados en alto nivel. Ahorre tiempo y tirones de caello dejando a PHP encontrar sus errores por usted.

Tomado y traducido de TutsPlus.


Acerca de Arturo Barajas

Ingeniero en sistemas por elección, geek por convicción. Fan de la literatura fantástica y de ciencia ficción, de la música rock y de la tecnología en general.