
¿Recuerdas la publicación que alguna vez fue popular: "
PHP: un fractal del mal diseño "? Cuando lo leí por primera vez, trabajé en un lugar estúpido con muchos proyectos PHP obsoletos. Ella me hizo preguntarme si debería irme y hacer algo completamente diferente a la programación.
Afortunadamente para mí, pronto pude cambiar mi lugar de trabajo y, lo que es más importante, PHP pudo evolucionar "ligeramente" a partir de la versión 5. *. Y hoy, a través de este artículo, quiero atraer a las personas que ya no programan en PHP o están atrapados en proyectos heredados.
Spoiler: Hoy, PHP, como casi todos los lenguajes de programación, está lleno de fallas. Muchas funciones básicas aún tienen firmas inconsistentes, las configuraciones son confusas, todavía hay muchos desarrolladores que escriben código de mierda, porque en su proyecto actual no funciona de manera diferente o porque no saben lo contrario.Hoy, quiero echar un vistazo al lado positivo: centrémonos en lo que ha cambiado y cómo escribir código PHP limpio y mantenido. Quiero pedirle que deje caer los prejuicios por unos minutos.
Después de eso, puede pensar en PHP exactamente igual que antes. Aunque, muy probablemente, se sorprenderá de algunas de las mejoras realizadas en PHP en los últimos años.
TL DR
- PHP se desarrolla activamente, se lanza una nueva versión cada año
- El rendimiento de la era de PHP 5 se duplica, si no se triplica
- Existe un ecosistema extremadamente activo de marcos y bibliotecas.
- En los últimos años, se han agregado muchas características nuevas a PHP, y el lenguaje continúa evolucionando.
- Herramientas como los analizadores estáticos han evolucionado mucho en los últimos años y continúan evolucionando aún más.
Breve historia
Un breve vistazo al ciclo de lanzamiento de PHP. La versión actual es PHP 7.3, y la
versión 7.4 se espera para finales de 2019. PHP 8.0 será la próxima versión después de 7.4. Desde la última era de PHP 5. *, el equipo de mantenedores ha estado tratando de mantener un ciclo de lanzamiento anual, y lo ha estado haciendo muy bien en los últimos cuatro años.
En general, cada nueva versión se respalda activamente durante dos años y recibe otro año de "soluciones de seguridad". El objetivo es motivar a los desarrolladores de PHP para que mantengan la versión actualizada: aplicar pequeñas actualizaciones cada año es mucho más fácil que, por ejemplo, cambiar de 5.4 a 7.0.
Aquí se puede encontrar un calendario actualizado de fechas de soporte para diferentes versiones de PHP.
Finalmente, PHP 5.6 fue la última versión de la rama 5. *, y 7.0 fue la siguiente. Si desea saber qué sucedió con PHP 6, puede escuchar el
podcast PHP Roundtable.
Ahora vamos a desacreditar algunos conceptos erróneos comunes sobre PHP moderno.
Rendimiento PHP
En los días de la versión 5. * El rendimiento de PHP fue ... promedio, en el mejor de los casos. Sin embargo, en la versión 7.0, partes importantes del núcleo de PHP se reescribieron desde cero, lo que resultó en un aumento del rendimiento de dos a tres veces.
Pero las palabras no son suficientes. Veamos las pruebas. Afortunadamente, otras personas pasaron mucho tiempo comparando el rendimiento de PHP. Creo que
Kinsta tiene una buena lista actualizada.
A partir de la versión 7.0, el rendimiento solo está aumentando. Tanto es así que las aplicaciones web PHP tienen un rendimiento comparable y, en algunos casos, mejor que los marcos web en otros idiomas. Eche un vistazo a
este extenso conjunto de pruebas.
Por supuesto, los frameworks PHP no superarán a C y Rust, pero son mucho mejores que Rails o Django, y son comparables a ExpressJS.
Marco y ecosistema
Hablando de frameworks: PHP ya no se limita a WordPress. Como desarrollador profesional de PHP, puedo decirle que WordPress no es en absoluto un representante del ecosistema moderno.
En general, hay dos marcos principales de aplicaciones web:
Symfony y
Laravel . Y algunos más pequeños: Zend, Yii, Cake, CodeIgniter, etc. Pero si quieres saber cómo es el desarrollo moderno de PHP, una buena opción sería conocer uno de los dos más grandes.
Ambos frameworks (Symfony y Laravel) tienen un gran ecosistema de paquetes y productos. Desde paneles administrativos y CRM hasta paquetes independientes (en el original - "paquetes independientes"), desde CI hasta perfiladores, así como numerosos servicios como servidores de socket web, gestores de colas, integración de pagos; francamente, demasiado para enumerarlo todo.
Sin embargo, estos marcos están destinados al desarrollo directo. Si solo necesita administrar su contenido, las plataformas como WordPress y CraftCMS solo están mejorando.
Una forma de medir el estado actual del ecosistema PHP es mirar packagist, el repositorio principal de paquetes para PHP. Está creciendo exponencialmente. Con ~ 25 millones de descargas por día, podemos decir con razón que el ecosistema PHP ya no es la debilidad que solía ser.
Eche un vistazo a este gráfico, que muestra la cantidad de paquetes y versiones a lo largo del tiempo. También se puede encontrar en
el sitio web de Packagist .

Además de los marcos de aplicaciones y CMS, en los últimos años también hemos visto un aumento en los marcos asincrónicos.
Estos frameworks y servidores, escritos en PHP u otros lenguajes, permiten el uso de PHP verdaderamente asíncrono. Los ejemplos incluyen
Swoole ,
Amp y
ReactPHP .
Desde que ingresamos al mundo asincrónico, cosas como los sockets web y las aplicaciones con muchas operaciones de E / S se han vuelto realmente relevantes en el mundo PHP.
La lista de correo interna, un lugar donde los desarrolladores líderes discuten el desarrollo del lenguaje, también habló sobre agregar libuv al kernel. Para aquellos que no conocen libuv, esta es la misma biblioteca que Node.js utiliza para garantizar toda su asincronía.
Lenguaje en sí
Aunque async y wait aún no están disponibles, en los últimos años se han realizado muchas mejoras en el lenguaje en sí. Aquí hay una lista incompleta de nuevas características en PHP:
- Funciones de flecha
- Operador de unión con nulo
- Rasgos
- Propiedades tipificadas
- Operador de desempaque
- Compilador Jit
- Interfaz de función externa
- Clases anonimas
- Declaración de tipo de devolución
- Criptografía moderna
- Generadores
- Mucho mas
Mientras hablamos de las características del lenguaje, también veamos el tema de cómo se desarrolla el lenguaje hoy en día. Hay un equipo de mantenedores voluntarios que avanzan el idioma, mientras que la comunidad también puede ofrecer RFC.
Estos RFC se discuten en la lista de correo interna, que también se puede leer en Internet. Antes de agregar una nueva función de idioma, se debe votar. Solo los RFC con una mayoría de votos, al menos ⅔ de todos los votantes, pueden ser incluidos en el núcleo.
Alrededor de 100 personas participan en la votación, y no hay ningún requisito para votar en cada RFC. El grupo de personas que tienen la oportunidad de votar, por supuesto, incluye a los mantenedores, porque deben mantener una base de código. Además de ellos, hay un grupo cuyos miembros fueron seleccionados individualmente de la comunidad PHP. Este grupo consta de mantenedores de documentación de PHP, autores de importantes proyectos de PHP y destacados desarrolladores de la comunidad de PHP.
Aunque la mayor parte del desarrollo es voluntario, uno de los principales desarrolladores de PHP, Nikita Popov, fue contratado recientemente por JetBrains para trabajar en el idioma a tiempo completo. Otro ejemplo es la Fundación Linux, que recientemente decidió invertir en Zend Framework. Tal trabajo y adquisiciones garantizan la estabilidad para el futuro de PHP y su desarrollo.
Kit de herramientas
Además del núcleo mismo, en los últimos años hemos visto un aumento en las herramientas que lo rodean.
Me vienen a la mente analizadores estáticos de
salmos como los creados por Vimeo,
Phan y
PHPStan .
Estas herramientas analizan estáticamente su código PHP e informan cualquier error típico, posibles errores, etc. En cierto sentido, la funcionalidad que proporcionan se puede comparar con TypeScript
(nota del traductor: los analizadores estáticos amplían la capacidad del lenguaje para buscar errores / defectos por lo tanto mejorando el lenguaje, TS condicionalmente hace lo mismo además de JS) , aunque en este momento el lenguaje PHP no es transpilable, por lo que no se permite la sintaxis personalizada.
Aunque todavía tenemos que confiar en los bloques de acoplamiento y la escritura, Rasmus Lerdorf, el creador de PHP,
mencionó la idea de agregar un mecanismo de análisis estático al núcleo. Esta tarea tiene mucho potencial, pero es enorme en términos de costos laborales.
Hablando de transposición, vale la pena señalar que hubo intentos de expandir la sintaxis de PHP no a nivel del núcleo, sino a nivel de las bibliotecas de usuario, tal como se implementa en JavaScript. Un proyecto llamado
Pre hace exactamente eso: le permite usar la nueva sintaxis PHP que se ajusta al código PHP normal.
Aunque este enfoque ha demostrado su eficacia en el mundo de JavaScript, solo puede ganar dinero en PHP si se proporciona el soporte adecuado para IDE y análisis estático. Esta es una idea muy interesante, pero tiene un largo camino por recorrer antes de que pueda llamarse mainstream.
En conclusión
A pesar de todo esto, siéntase libre de pensar en PHP como un lenguaje terrible. Definitivamente tiene sus defectos y una herencia de 20 años, pero puedo decir con confianza que me gusta trabajar con él.
Con él, puedo crear software confiable, bien mantenido y de alta calidad. Los clientes para los que trabajo están contentos con el resultado final, al igual que yo.
A pesar del hecho de que aún puede escribir código muy malo cuando trabaja con PHP, diría que esta es una gran opción para el desarrollo web, si se usa correctamente.
¿No estas de acuerdo? Escribe en los comentarios por qué!