Hace casi 8 meses, pasé de proyectos de python / java a un proyecto de php (me ofrecieron condiciones que sería una tontería rechazar), y de repente no sentí el dolor y la desesperación sobre los que los antiguos desarrolladores de PCP estaban predicando. Y aquí está lo que pienso sobre esto.

Que es que
Para empezar, permíteme contarte mi experiencia de desarrollo y la experiencia de las herramientas en otros idiomas, para que entiendas con qué me estoy comparando.
Pitón Cuando se trata de proyectos en python (la mayoría de las veces en Django), obtenemos una plataforma que le permite aumentar de manera conveniente y sencilla la funcionalidad, construir servidores rest-api, realizar particiones del sistema y más. La lógica del marco es muy clara y directa. Incluso un desarrollador completamente verde puede, en un par de horas, anotar un pequeño blozik con un panel de administración. Además, la documentación de Django es una de las de mayor calidad que he visto. A todo esto, se agrega el azúcar de sintaxis de Python, que ayuda a implementar ciertos patrones con bastante elegancia. Si nos movemos de Django a Tornado / aiohtpp / Twisted / Flask, etc., entonces el dolor comienza, porque el código en ellos es mucho más desagradable que en Django.
Java Si estamos hablando de Java, por ejemplo, Spring, entonces estos son sistemas que causan dolor anal porque te obligan a configurar todo lo que se puede configurar. El umbral de entrada es muy alto, hay una gran cantidad de matices que debe tener en cuenta, además de la sintaxis de Java en sí misma lo obliga a escribir construcciones muy voluminosas (cierto para todos los proyectos en el sexto Java). Pero como recompensa, obtenemos sistemas muy confiables y flexibles que más de una docena de programadores pueden sobrevivir con manos muy mediocres.
En cuanto a PHP
Antes de comenzar a trabajar, leí un libro: Matt Zandra: objetos PHP, plantillas y técnicas de programación, y me aseguré de que PHP, en general, sin ningún problema en particular, le permita implementar ciertos patrones de desarrollo. Es decir en PHP puedes escribir el código correcto, que no diferirá mucho de lo que tenemos en Python / Java.
Zend Framework 1
El proyecto de servicio interno me conoció Zend Framework 1 en PHP 5.3. Debo decir de inmediato que muchas decisiones en esta plataforma parecen muy controvertidas, y el lenguaje PHP 5.3 tiene restricciones para establecer el tipo de retorno de funciones (métodos), sin embargo, usted comprende rápidamente dónde radica, cómo se emite y cómo se forma.
Por ejemplo, si estamos considerando Zend Forms, prácticamente hacen el mismo trabajo que las formas clásicas en Django. La sintaxis para construir consultas en DB Zend DB Table no causa ninguna negativa, y obviamente funciona.
Es decir literalmente en 2-3 días pude entender completamente y comencé a escribir código que hacía lo que se requería de una manera completamente adecuada.
Symfony 3.4
Después de 3 meses, me transfirieron a otro proyecto en Symfony 3.4 y PHP 7.1, y esto es solo una bomba. Francamente tuve la sensación de que me dieron bolígrafos Django, donde agregaron la confiabilidad del sistema desde Java.
- Template engine Twig: un clon completo de Jinja de Django.
- Doctrine ORM: un análogo de Hibernate
- Anotaciones de Symfony: un análogo de decoradores de Python
- Symfony con cableado automático: aún más obvio que DI en Spring
- Configuraciones obvias de secreto
- Construcción conveniente de clientes rest-APi.
- Ortografía conveniente de un trabajo para la corona (en este caso, se llaman comandos de consola en la sinfonía)
- Conveniente depurador y asistente de consola.
Además, el lenguaje PHP 7.1 en sí mismo ya permitía especificar tipos de retorno, haciendo múltiples ganchos de excepción y otros nishtyaki. Y digamos que desapareció absolutamente cualquier molestia al trabajar con la herramienta. Y en algunos lugares todo funciona aún más convenientemente.
El único inconveniente es la falta de documentación. Es decir los casos más simples se indican en la documentación, y todo lo que es más interesante ya requiere profundizar en el código fuente de Symfony, y el marco sorprendentemente no es tan popular en Google como nos gustaría.
Por lo tanto, no entiendo por qué la gente escupe PHP cuando funciona y es genial.
Hay alguna diferencia
También quiero señalar un punto tal que después de haber trabajado en 3-4 marcos web modernos, entiendes que todo funciona de manera similar en todas partes. Los nombres y las implementaciones difieren, y los conceptos generales son de 1 a 1. Por lo tanto, digamos, si trabajó en Django, entonces la transferencia a php Symfony / .Net CORE MVC es posible sin demasiada dificultad durante un par de meses.
PD: si todavía estoy ciego y estúpido, por favor comente.