PHP Entwicklung. Symfony Konsolen-Komponente - Tipps & Tricks
Dieser Artikel wurde mit dem Ziel erstellt, Ihnen die nützlichsten und abrufbarsten Tipps und Tricks über Symfony Console Development zu zeigen.
Über die Fehler, die bei der Durchführung eines Projekts gemacht werden, ist schon mehr als ein Artikel geschrieben worden, aber nur selten werden die Projektanforderungen und das Risikomanagement angesichts der gewählten Technologie betrachtet.
PHPhat, wie andere Sprachen auch, einige Nachteile, die aber nichts wert sind, wenn es um die Verwaltung einer IT Projekt wobei PHP ist die führende Sprache.
Nachfolgend haben wir eine Liste von ihnen zusammengestellt, zusammen mit Tipps, wie man sie vermeiden kann.
PHP gilt als "einfache Sprache", weil sie eine sehr niedrige Einstiegshürde hat. Dies führt zu großen Unterschieden bei den Kodierungsstandards und der Art und Weise, wie globale Schnittstellen in verschiedenen externen Bibliotheken implementiert werden. In dem Bemühen, Ordnung zu schaffen, wurde eine Reihe von Standards eingeführt. Diese beschreiben eine Reihe von Möglichkeiten, wie der Implementierungsentwickler alle vom Standard geforderten Einschränkungen erfüllen kann. Ein einfaches Beispiel für Ereignis-Disponent:
Listener - Ein Listener ist ein beliebiger PHP aufrufbar, der die Übergabe eines Ereignisses erwartet. Null oder mehr Listener können das gleiche Ereignis erhalten. Ein Listener KANN ein anderes asynchrones Verhalten in die Warteschlange stellen, wenn er dies wünscht.
Mit Hilfe dieses Standards kann jeder Entwickler, der die PSR-kompatible Nomenklatur verwendet, nicht nur problemlos mit der PSR kommunizieren, sondern auch Code mit anderen Entwicklern.
Die Umsetzung dieser Standards in die Praxis, zum Beispiel durch die Verwendung von PHP Der richtige Weg Leitlinien und Bibliotheken, die globale PSR-Schnittstellen unterstützen, ermöglicht PHP Entwickler schnellere Anpassung an Änderungen der funktionalen, architektonischen und infrastrukturellen Anforderungen.
Als Betreuer der Codebasis sollten Sie immer daran denken, bewährte und stabile Versionen externer Bibliotheken zu verwenden, und wenn Sie gezwungen sind, eine benutzerdefinierte Lösung zu verwenden, implementieren Sie diese mit PHP PSRs.
Eine Liste aller verfügbaren Normen finden Sie auf der Hauptwebsite PHP-FIG. Erweiterte Normen mit praktischen Beschreibungen sind in einer Vielzahl von Formaten bei der PHP Der richtige Weg Homepage.
Die besten Bibliotheken, die den PHP-FIG-Standards entsprechen, sind auf der Seite PHP Liga Website.
In Projekten, die den Abhängigkeitsmanager verwenden Komponist Häufig kommt es zu einer Situation, in der nach einer langen Zeit der Unterstützung und Pflege des Produkt In der Produktionsumgebung müssen funktionale Änderungen vorgenommen werden, ohne dass die gesamte Architektur neu aufgebaut werden muss. Meistens wird das Projekt dann von einem Programmierer übernommen, dessen Aufgabe darin besteht, die lokale Entwicklungsumgebung zu starten und mit der Arbeit an Tickets zu beginnen. Auf der Grundlage der composer.lock
Datei kann der Entwickler das Projekt in den Zustand zurückversetzen, in dem es sich in der Produktionsumgebung befand, aber jede Änderung an der komponist.json
Datei, z. B. durch Hinzufügen der Bibliothek, führt zu einer Kaskade von Fehlern, die die tatsächliche Zeit für die Implementierung einer neuen Team Mitglied der Organisation sowie die Zeit der Entwicklung der Lösung.
Sobald die Anwendung stabil ist, sollte der Codeverwalter die Versionen der Bibliotheken in der komponist.json
Datei und erstellen Sie ein klares Verfahren, das beschreibt, wie Sie ihre Versionen bei Bedarf aktualisieren können.
Ziehen Sie auch in Betracht, einen Mechanismus zur Überprüfung des Sicherheitsstatus der verwendeten Bibliotheken einzurichten und die Bereitstellung von Sicherheitsupdates zu automatisieren.
Mit kostenlosen Tools wie Dependabotkönnen wir sowohl eine konsistente, verwaltbare Versionsinfrastruktur für abhängige Bibliotheken pflegen als auch eine Sicherheitsgarantie für unsere Anwendung bieten.
> Es ist nur ein CRUD, warum sich die Mühe machen?
> Es gibt eine Bibliothek, die genau das tut!
In der PHP ist es leicht, bei der Implementierung der Geschäftslogik von Produkten in den Strudel der Vergesslichkeit zu geraten. Im Laufe der Jahre gab es Hunderte von Projekten, die [administrative Panels zur Verwaltung von Datenmodellen erstellen](https://backpackforlaravel.com/), [Google Analytics-ähnliche Ansichten generieren](https://github.com/Kunstmaan/KunstmaanDashboardBundle) oder [die asynchronen Probleme von PHP lösen](https://laravel.com/docs/9.x/octane) - und das alles mit einem Zauberstab (OK, mit einer einzigen Befehlszeilenabfrage).
Die PHP-Welt ist voller fertiger Implementierungen, die in 99,9% der Zeit funktionieren.
Bei 0.1% kollidiert die Geschäftslogik mit den funktionalen Einschränkungen der verwendeten Bibliotheken.
Es sind diese so genannten "throw-ins", die am Ende des Projekts am schwierigsten zu implementieren sind.
Es gibt keine Chance, den goldenen Mittelweg zwischen Overengineering und Underengineering zu finden, wenn man das Geschäftsfeld des Produkts nicht richtig versteht.
Durch den Start Entwicklungsteam Durch eine frühzeitige Beteiligung an der Produktentwicklung und eine proaktive Zusammenarbeit mit dem Produktverantwortlichen können Sie das Risiko minimieren, dass eine Lösung verwendet wird, die langfristig nicht funktioniert.
PHP ist nicht perfekt, soviel ist sicher. Seine Unzulänglichkeiten in Bezug auf die statische Typisierung, die fehlende Unterstützung für Generika und die fortgesetzte Unterstützung für archaische Methoden sind immer noch eine Quelle für Witze unter Programmierern. Dennoch, seit einiger Zeit PHP Entwickler haben immer leistungsfähigere Instrumente erhalten wie PHPStan, Xdebug, PHP-CS-Fixierer die es ihnen ermöglichen, Konsistenz und statische Typisierung aufrechtzuerhalten und so viele Fehler zu vermeiden. Dennoch wird den Tests zu wenig Aufmerksamkeit gewidmet, die, wenn sie richtig implementiert sind, einen schnellen Return on Investment in Form von
- Reduzierung der Regressionsfehler
- erhöhtes Bewusstsein für die Produktmöglichkeiten
- Stärkung des Verantwortungsgefühls der Entwickler für den Code
Sparen Sie nicht an den Kosten für Tests. Das Schreiben einfacher Behat-Skripte ist wirklich nicht schwer. Sie müssen nicht gleich komplexe End-to-End-Tests schreiben oder sich mit Implementierungsdetails befassen und jede Methode einem Unit-Test unterziehen.
Ein einfacher Behat-Test, der in natürlicher Domänensprache beschrieben ist, ist oft mehr wert als der am sorgfältigsten geschriebene End-to-End-Test.
Die PHP Sprache und seine beiden leistungsfähigsten Rahmenwerke Laravel und Symfony sind bestens geeignet, um eine moderne, funktionale und vor allem leistungsstarke Architektur zu schaffen. Die Unterstützung für verschiedene Warteschlangensysteme und die immer schnelleren PHP Leistungsverbesserungen von Version zu Version ermöglichen uns die einfache Erstellung von Microservices auf der Grundlage von Microframeworks. In den meisten Fällen setzen wir jedoch nach wie vor auf monolithische Systeme. Daran ist nichts auszusetzen, aber bei der Entwicklung solcher Systeme müssen wir genau auf die Domänengrenzen achten und die Schnittstellen zwischen neuen Lösungen und älteren Teilen des Systems festlegen.
Bei der Entwicklung jeder PHP Website lohnt es sich, aktuelle Lösungen unter die Lupe zu nehmen, globale Schnittstellen für die Datenkommunikation zu schaffen und neue Funktionalitäten mit den neuesten Techniken und Praktiken zu implementieren. Eine der in der Praxis am häufigsten eingesetzten Lösungen ist Würger-Muster.