Por qué 2013 es el año de PHP

2012 fue un año excelente para la comunidad de PHP, gracias a que se agregaron muchas funciones muy necesarias a la versión 5.4, así como a los innumerables proyectos, que avanzan a PHP al siguiente nivel.

En este artículo, me gustaría revisar algunos de los problemas que las personas tuvieron con PHP en el pasado y dar una idea de por qué 2013 puede ser el año de PHP.!


¿Por qué la hostilidad??

Esto puede ser una sorpresa para usted, pero muchas personas tienen sentimientos negativos hacia los desarrolladores de PHP y el lenguaje en general. Es probable que sepas exactamente a lo que me refiero, si has considerado aprender a Ruby en los últimos dos años, debido a un cierto sentido de la presión de los compañeros..

Sin embargo, antes de realizar cualquier cambio, debe preguntarse: "¿Por qué PHP tiene un estigma tan grande?"

Bueno, como muchas de las preguntas importantes de la vida, no hay una respuesta clara. Después de hacer un poco de búsqueda en línea, para algunos argumentos de PHP, encontrará que aproximadamente el ochenta por ciento de los argumentos en contra de PHP están enraizados en la ignorancia, de una forma u otra.

Aproximadamente el ochenta por ciento de los argumentos en contra de PHP están enraizados en la ignorancia.

Los principiantes

Están los principiantes, que realmente no saben cómo funciona PHP. Esto da lugar a preguntas, como "¿Por qué no puedes escuchar eventos de botones con PHP??,"y preguntas similares sobre AJAX.

Un idioma para gobernarlos a todos

A continuación, tiene personas que no conocen otro lenguaje o marco que el que utilizan actualmente. Estos son los tipos de personas que hacen argumentos, tales como "Rails es mucho más fácil que PHP," y cosas asi.

Luchando PHP 4

La tercera forma de error proviene de las personas que no han seguido los avances de PHP a lo largo de los años. En su lugar, todavía están luchando contra el idioma, como existía hace años y años. Esto da lugar a declaraciones, como: "PHP no está orientado a objetos"o"PHP apesta porque no soporta espacios de nombre."Entiendes la idea.

Escalada

Por último, tenemos los desarrolladores más inteligentes que creen que "PHP no puede escalar" o "PHP no tiene estándares", lo cual es completamente falso. La escala tiene menos que ver con el idioma, y ​​más con el servidor y cómo está estructurada su aplicación. ¿En cuanto a las normas? Bueno, solo se necesita una búsqueda rápida en Google para PHP-FIG..

Qué es el PHP-FIG? "La idea detrás del grupo es que los representantes de proyectos hablen sobre los puntos en común entre nuestros proyectos y encuentren formas de trabajar juntos. Nuestra audiencia principal es la otra, pero somos muy conscientes de que el resto de la comunidad de PHP está observando. Si "otras personas quieren adoptar lo que estamos haciendo, están invitados a hacerlo, pero ese no es el objetivo".

Es una verdad desafortunada que algunos argumentos, que se transmiten a través de la web, son completamente falsos o actualizados..


PHP no es perfecto

Hay verdad en cada crítica, sin embargo.

Sin embargo, hay verdad en cada crítica. PHP no es perfecto. Cuando se trata de su implementación de características y funciones principales, PHP es inconsistente. Estos argumentos son totalmente válidos..

Estas inconsistencias no son sin razón, sin embargo. PHP comenzó como lo que hoy llamaríamos un lenguaje de plantillas. Desde entonces, ha pasado por múltiples cambios de paradigma, transformándose en un lenguaje funcional, como C, y luego en el lenguaje totalmente OOP que hoy disfrutamos. A lo largo del camino, han surgido las mejores prácticas y diferentes personas han tenido el control de lo que se agrega. Esto da como resultado muchos tipos de código "diferentes" en un solo idioma. Ahora puedes preguntar, "¿Por qué no despreciar las partes malas??"

La respuesta a esta pregunta es la misma por la que seguimos creando sitios para versiones antiguas de Internet Explorer. No me malinterpretes Me encantaría simplemente soltarlo, pero los cambios masivos como este no se pueden hacer sin un poco de tiempo. Con suerte, a lo largo del tiempo, PHP avanzará más hacia la POO y comenzará a convertir sus objetos para usar sus funciones con la notación de puntos, en lugar de la incómoda -> sintaxis. Entonces, en lugar de array_push ($ arr, "Valor");, usted escribiría algo, como $ arr.push ("Valor");.

No te preocupes Cosas como estas han estado sucediendo lentamente. Basta con mirar las nuevas características de PHP 5.5. El antiguo complemento MySQL orientado a funciones ha quedado en desuso, en favor del enfoque orientado a objetos más nuevo.


El presente

Ahora, con el pasado cubierto, avancemos al presente. Hay un puñado de proyectos y movimientos realmente geniales, algunos de los cuales toman ideas de otros lenguajes para impulsar a PHP al siguiente nivel..

Consideremos lo siguiente:

  • Compositor
  • Laravel
  • Desarrollo guiado por pruebas
  • PHP 5.4 / 5.5

Compositor

La comunidad de PHP ahora puede dejar de reinventar la rueda una y otra vez, gracias a Composer.

Inspirada por herramientas, como Bundler y NPM, la comunidad de PHP ahora puede dejar de reinventar la rueda una y otra vez, gracias a Composer. Node.js fue el primer idioma que me hizo sentir cómodo con el uso de paquetes. Si lo has usado antes, entonces sabes lo que quiero decir. Los paquetes se instalan localmente en el directorio de su proyecto, es fácil encontrar documentación para la mayoría de los complementos y es relativamente sencillo enviar sus propios paquetes.

PERA?

PHP ofreció una alternativa durante años, PEAR, pero no era demasiado intuitivo o fácil de usar. Se sentía voluminoso por algo que, en última instancia, buscaba archivos de texto plano. Además, instaló todos los paquetes globalmente. Esto le obligó a informar a las personas qué paquetes utilizó al distribuir su código fuente. Como puede imaginar, esto dio lugar a versiones mal emparejadas y otras cosas de esa naturaleza..

Si lo desea, puede escoger y elegir sus componentes..

Composer soluciona todo esto, gracias a los paquetes almacenados localmente y la capacidad de crear archivos de dependencia por proyecto. Esto significa que puede distribuir fácilmente su proyecto con este archivo de dependencia, y otros pueden usar su propia copia de Composer para descargar automáticamente todas las dependencias especificadas, mientras que al mismo tiempo los mantienen actualizados..

Además, Composer es una aplicación liviana, escrita en PHP, en sí misma, y ​​viene con una función de autocargador. Esto funciona fuera del estándar PSR-0 (mencionado anteriormente), que cargará automáticamente sus dependencias a medida que las necesite, para que su aplicación permanezca lo más limpia posible..

Todas estas características son una mejora definitiva, sin embargo, sin la adopción de la comunidad, no significa nada. Me complace informarles que ha sido muy bien aceptado. Grandes proyectos, como Symfony y Laravel, ya han subido sus componentes a la biblioteca Composer, Packagist. La división del marco en componentes significa que puede crear fácilmente su propio marco personalizado para que coincida con sus gustos. En otras palabras, no hay marcos más hinchados. Si lo desea, puede escoger y elegir sus componentes..

¿Necesitas un ejemplo? Puedes tomar el componente de la base de datos de Laravel y emparejarlo con el componente de plantillas del marco de Symfony. De hecho, el marco Laravel, en sí mismo, aprovecha muchos componentes Symfony bien probados. ¿Por qué reconstruir la rueda, cuando puede centrar sus esfuerzos en otras áreas??


Laravel

Incluso si tiene problemas con algunas de las inconsistencias de PHP, Laravel abstrae casi todo..

Ahora, esto no sería un artículo sobre el futuro de PHP sin discutir Laravel con un poco más de detalle. A menudo nos preguntan por qué Nettuts + parece estar presionando a Laravel tanto como lo ha hecho. Esta es la pregunta equivocada. En su lugar, pregunte "Por qué no?"

Incluso si tiene problemas con algunas de las inconsistencias de PHP, Laravel abstrae casi todo, brindándole la sensación y la elegancia de un lenguaje, como Ruby, pero con la facilidad de PHP..

Laravel viene con Eloquent, un ORM que replantea completamente todo lo relacionado con las bases de datos. Utilizo principalmente MySQL con PHP; lo que obtiene de la base de datos es un objeto de recurso, que luego tiene que ejecutar a través de una función para capturar los resultados. En Laravel, todo se devuelve como PHP estándar; Te dan objetos, que puedes modificar y guardar. Puede hacer cosas, como combinar los resultados de varias tablas para guardar en llamadas a la base de datos (lo que se conoce como carga impaciente), y es ridículamente sencillo hacer cosas, como validación y consultas personalizadas. Como beneficio adicional, si no le gusta el SQL, todo esto se puede hacer con un estilo OOP, utilizando métodos simples y legibles, como encontrar y borrar.

Solo hemos visto la punta del iceberg con lo que Eloquent trae a la mesa, pero ya puedes ver las mejoras. Laravel ofrece este tipo de innovación a casi todos los campos de PHP, incluidas las plantillas, el enrutamiento, las migraciones, las clases REST y mucho más. La mejor parte, sin embargo, es que, con cada nueva versión, el creador de Laravel, Taylor Otwell, continúa subiendo el listón.

Si desea obtener más información sobre Laravel, recomiendo el curso Tuts + Premium, Laravel Essentials, impartido por nuestro propio Jeffrey Way. No digo esto como parte del personal de Nettuts +, sino como una persona que vio la serie. Honestamente puedo decir que no tenía conocimiento de que Laravel entrara, y Jeffrey hizo un excelente trabajo cubriendo lo más posible.

En última instancia, no se trata realmente del marco, sino del apoyo de la comunidad. Mientras haya apoyo para un proyecto, se actualizará y seguirá siendo relevante. Si está preocupado por cuánto tiempo seguirá siendo popular, entonces, simplemente al usarlo activamente, estará asegurando sus probabilidades.!


PHP 5.4 / 5.5

Lo siguiente que me gustaría comentar es las actualizaciones de PHP que se lanzaron en 2012. Con el lanzamiento de la versión 5.4 llegó una gran cantidad de excelentes características nuevas. Para obtener una descripción general de las actualizaciones, puede consultar estos dos artículos aquí en Nettuts +: artículo 5.4, artículo 5.5.

Pero, para un resumen rápido de mis favoritos:

Rasgos

  • Los rasgos agregan la capacidad de crear "parciales" de clase, lo que te permite crear objetos consistentes sin tener que volver a escribir todo una y otra vez.

Generadores

  • Los generadores le permiten hacer cosas geniales con listas de datos, así como también beneficiarse de todas las características que vienen con la evaluación perezosa..

Servidor web CLI

  • Otra gran adición es el servidor web incorporado, que le permite probar sus aplicaciones con diferentes versiones de PHP, sin la necesidad de algo como Apache.

Desreferenciación

  • La anulación de referencias no es una adición importante, pero es bueno poder hacer referencia a elementos secundarios sin el uso de funciones. Esto incluye cosas como acceder a caracteres individuales de una constante utilizando solo la notación de corchete.

La nueva API de hashing de contraseñas

  • Con la nueva API, tiene la posibilidad de cifrar cadenas, así como de verificar y reforzar las contraseñas, todo sin ningún conocimiento de bcrypt o cualquier otro algoritmo de hash.

Estos representan solo algunas de las nuevas mejoras, y hay una lista completa de las cosas que se están discutiendo actualmente para la próxima versión, que se lanzará a finales de este año..


Desarrollo guiado por pruebas

Finalmente, hablemos un poco acerca de probar tu código. Si bien es cierto que un poco tarde para el juego, en 2012, nuestra comunidad vio una adopción generalizada de la metodología de desarrollo basada en pruebas. Podría compensar un porcentaje de crecimiento, pero creo que una mejor indicación de la verdad es simplemente buscar en diferentes sitios y foros de desarrollo. Seguramente verás una espiga! Cuando se trata de pruebas en PHP, PHPUnit es el estándar bien aceptado..

Por qué es importante?

Piensa en tu proyecto antes de sumergirte, como un vaquero..

Muchas veces, te propones escribir un código, pero pierdes algo en la traducción. Lo que quiero decir con esto es que planeas una cosa, pero cuando la implementas, pierdes un poco de integridad o funcionalidad. Otro problema común surge al escribir código para proyectos grandes: terminas con varias clases y archivos que tienen sus propias dependencias. Lo que le queda es una "evolución entrelazada" de funcionalidad que puede resultar difícil de seguir y rastrear. Como un juego de Jenga, al actualizar una pieza, puedes romper otra, paralizando tu aplicación. Estos son solo dos problemas de ejemplo, pero ciertamente hay otros.

¿Cómo ayuda TDD??

Bueno, escribes pruebas claras antes de escribir cualquier código de producción. Esto significa que, cuando llega a escribir su código real, se ve obligado a cumplir con su plan original. No solo esto, sino que, en la línea, todas las dependencias se rastrearán en sus pruebas. Si actualiza un poco de código y rompe inadvertidamente una de las pruebas, se le notificará de inmediato..

Sí, la configuración de estas pruebas requiere un paso adicional, pero también lo es pensar antes de hablar. ¿Alguien tiene los beneficios de eso? Por supuesto no. Lo mismo es cierto para las pruebas: piense en su proyecto antes de sumergirse, como un vaquero.

Aprendizaje adicional
  • Test-Driven PHP (Premium)
  • TDD en PHP

Conclusión

Es un momento emocionante para ser un desarrollador de PHP. Muchos de los problemas inherentes tienen o están siendo arreglados. En cuanto a los otros problemas, los remediaremos fácilmente con un buen marco y pruebas.

¿Entonces, qué piensas? ¿Te estás embarcando? En desacuerdo conmigo Si es así, continuemos con la discusión a continuación.!