Vor fast 8 Monaten wechselte ich von Python / Java-Projekten zu einem PHP-Projekt (mir wurden Bedingungen angeboten, deren Ablehnung dumm wäre), und ich spürte plötzlich nicht mehr den Schmerz und die Verzweiflung, über die ehemalige Entwickler von PCP predigten. Und hier ist, was ich darüber denke.

Was ist was?
Lassen Sie mich zunächst meine Entwicklungserfahrung und die Erfahrung mit Werkzeugen in anderen Sprachen erläutern, damit Sie verstehen, womit ich vergleiche.
Python Wenn es um Projekte in Python geht (meistens in Django), erhalten wir eine Plattform, mit der Sie die Funktionalität ganz bequem und einfach erweitern, Rest-API-Server erstellen, System-Sharding durchführen und vieles mehr können. Die Logik des Frameworks ist sehr klar und unkompliziert. Sogar ein völlig grüner Entwickler kann in ein paar Stunden einen kleinen Blozik mit einem Admin-Panel aufschreiben. Außerdem ist die Django-Dokumentation eine der höchsten, die ich je gesehen habe. Dazu kommt Python-Syntaxzucker, der dazu beiträgt, bestimmte Muster recht elegant zu implementieren. Wenn wir von Django nach Tornado / aiohtpp / Twisted / Flask usw. ziehen, beginnt der Schmerz, weil der Code in ihnen viel unangenehmer ist als in Django.
Java Wenn wir über Java sprechen, zum Beispiel Spring, dann sind dies Systeme, die Analschmerzen verursachen, weil sie Sie zwingen, alles zu konfigurieren, was konfiguriert werden kann. Die Eintrittsschwelle ist sehr hoch, eine Vielzahl von Nuancen, die Sie berücksichtigen müssen, und die Java-Syntax selbst zwingt Sie dazu, sehr umfangreiche Konstruktionen zu schreiben (gilt für alle Projekte im sechsten Java). Als Belohnung erhalten wir jedoch sehr zuverlässige und flexible Systeme, mit denen mehr als ein Dutzend Programmierer mit sehr mittelmäßigen Händen überleben können.
Wie für PHP
Bevor ich mit der Arbeit anfing, las ich ein Buch: Matt Zandra - PHP-Objekte, Vorlagen und Programmiertechniken und stellte sicher, dass Sie mit PHP im Allgemeinen ohne besondere Schmerzen bestimmte Entwicklungsmuster implementieren können. Das heißt, In PHP können Sie den richtigen Code schreiben, der sich nicht wesentlich von dem unterscheidet, was wir in Python / Java erhalten.
Zend Framework 1
Das interne Serviceprojekt hat mich mit Zend Framework 1 in PHP 5.3 getroffen. Ich werde gleich sagen, dass viele Entscheidungen auf dieser Plattform sehr kontrovers aussehen und die PHP 5.3-Sprache Einschränkungen beim Festlegen der Art der Rückgabe von Funktionen (Methoden) hat. Sie verstehen jedoch schnell, wo was liegt, wie was gegossen wird und wie was gebildet wird.
Wenn wir zum Beispiel Zend-Formen betrachten, dann machen sie praktisch die gleiche Arbeit wie die klassischen Formen in Django. Die Syntax zum Erstellen von Abfragen in DB Zend DB Table verursacht keine negativen Ergebnisse und funktioniert ganz offensichtlich.
Das heißt, buchstäblich in 2-3 Tagen war ich in der Lage, vollständig zu verstehen und begann, Code zu schreiben, der das, was von ihm verlangt wurde, auf völlig angemessene Weise tat.
Symfony 3.4
Nach 3 Monaten wurde ich zu einem anderen Projekt auf Symfony 3.4 und PHP 7.1 versetzt - und dies ist nur eine Bombe. Ich hatte ehrlich gesagt das Gefühl, dass sie mir Django-Stifte gaben, wo sie die Zuverlässigkeit des Systems von Java hinzufügten.
- Template Engine Twig - ein vollständiger Klon von Jinja aus Django.
- Doctrine ORM - ein Analogon zum Ruhezustand
- Symfony-Annotationen - ein Analogon von Dekorateuren aus Python
- Automatische Verkabelung Symfony - noch offensichtlicher als DI im Frühjahr
- Offensichtliche Konfigurationen der Geheimhaltung
- Bequemer Aufbau von Rest-APi-Clients.
- Bequeme Schreibweise eines Jobs für die Krone (in diesem Fall werden sie in der Symphonie als Konsolenbefehle bezeichnet)
- Praktischer Debugger und Konsolenassistent.
Außerdem erlaubte die PHP 7.1-Sprache selbst bereits die Angabe von Rückgabetypen, wodurch Multi-Exception-Hooks und andere Nishtyaki erstellt wurden. Und lassen Sie uns einfach sagen, dass absolut alle Unannehmlichkeiten durch die Arbeit mit dem Werkzeug verschwunden sind. Und an einigen Stellen funktioniert alles noch bequemer.
Das einzige fette Minus ist der Mangel an Dokumentation. Das heißt, Die einfachsten Fälle sind in der Dokumentation angegeben, und alles, was interessanter ist, erfordert bereits das Eingraben in den Symfony-Quellcode, und das Framework ist bei Google überraschenderweise nicht so beliebt, wie wir es gerne hätten.
Daher habe ich absolut kein Verständnis dafür, warum Leute auf PHP spucken, wenn es funktioniert und ziemlich cool ist.
Gibt es einen Unterschied?
Ich möchte auch einen solchen Punkt erwähnen, dass Sie, nachdem Sie an 3-4 modernen Web-Frameworks gearbeitet haben, verstehen, dass alles überall auf ähnliche Weise funktioniert. Die Namen und Implementierungen unterscheiden sich, und die allgemeinen Konzepte sind 1 zu 1. Wenn Sie also an Django gearbeitet haben, ist die Übertragung auf PHP Symfony / .Net CORE MVC für einige Monate ohne allzu große Schwierigkeiten möglich.
PS: Wenn ich immer noch blind und dumm bin, kommentiere bitte.