© saicle/Shutterstock.com
Kolumne: Alles im Flow

Kolumne: Alles im Flow


Diesmal geht es um Gemeinsamkeiten und Unterschiede zwischen Open-Source-Projekten, einen 5-Minuten-Audit-Log mit Dependency Injection und AOP, Code-Sprints und um die anstehende Konferenz Inspiring Flow.

Gemeinsamkeiten

Vor Kurzem fand in Brüssel die FOSDEM statt – eine Konferenz, die eher eine Art Familientreffen von über 5 000 Entwicklern und Open-Source-Interessierten ist. Ein Novum dieses Jahr war der eigene Track zum Thema PHP. Neben unseren eigenen Vorträgen nutzten Lukas Smith (Symfony), Karsten Dambekalns (TYPO3), Johan Janssens (Joomla!) und ich die Gelegenheit, gemeinsame Probleme zu diskutieren und Anknüpfungspunkte auszuloten. Die weitere Professionalisierung in der PHP-Community stellt Projekte wie unsere vor spannende Aufgaben: Wie schafft man es, Entwicklern sehr unterschiedlicher Stufen des Könnens und mit verschiedenen Ambitionen den Einstieg zu ermöglichen und sie langfristig zufriedenzustellen? Eine abschließende Antwort haben wir nicht gefunden, wohl aber eine Menge Gemeinsamkeiten – und die erneute Erkenntnis, dass es sich lohnt, auch über Projektgrenzen hinaus zusammenzuarbeiten.

Unterschiede

Das Thema Dependency Injection ist – glücklicherweise – längst auch in der PHP-Welt angekommen, und kaum ein modernes Framework mag inzwischen darauf verzichten. So unterschiedlich wie die Frameworks sind auch ihre Umsetzungen dieses Design Patterns. Auch wenn es dabei selten ein „richtig“ oder „falsch“ gibt, lässt sich anhand dieses Features gut der Ansatz des entsprechenden Frameworks erklären. Bei TYPO3 Flow lautet dieser: möglichst wenig Schreibarbeit. In der Kombination mit aspektorientiertem Programmieren ergibt dieses Feature ein richtiges Powerpaket. Dazu ein kleines Beispiel aus der Praxis ...

Audit Log in 5 Minuten

Eine klassische Projektanforderung ist das Protokollieren von wichtigen Vorgängen. Geschäftsprozesse werden allerdings nicht nur in einer einzelnen Klasse verarbeitet, sondern erstrecken sich verteilt auf viele Controller, Models und (Domain-)Services. Anstatt ein Logging in jeder dieser Klassen gesondert zu berücksichtigen, kann man in Flow auf Aspekte zurückgreifen, die es erlauben, diese so genannten „Cross-Cutting Concerns“ zu zentralisieren.

Ein Logging-Aspekt

Jedes Mal, wenn Rechnungen oder Produkte neu angelegt oder verändert werden, soll in unserem Beispielprojekt ein Eintrag in eine Log-Datei geschrieben werden. In Listing 1 sehen wir uns zunächst an, wie eine Rechnung erstellt oder verändert wird.

Listing 1

publi...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang