search
keyboard_arrow_up

Wie Services das Dependency Injection Verhalten der Entwickler beeinflusst haben

Spätestens seit der stetig wachsenden Popularität von Unittests, besonders durch PHPUnit, bekam die Auflösung der Abhängigkeiten von Klassen durch Dependency Injection in PHP eine immer größere Rolle im Alltag der Entwickler. Klassen, welche eine oder mehrere Abhängigkeiten zu anderen Klassentypen haben, bekommen diese bei ihrer Erzeugung über den Konstruktor oder zur Laufzeit über Methodenaufrufe übergeben. Dadurch verbessert sich die Wartbarkeit der einzelnen Klassen und Abhängigkeiten lassen sich bei geänderten Anforderungen leichter austauschen. Ebenfalls verbessert sich die Testbarkeit der einzelnen Komponenten, bei der Abhängigkeiten von Klassen durch einfache Test Doubles ersetzt werden können. Ein Nachteil jedoch ist vermehrter Boilerplate Code, wenn an verschiedenen Stellen im Projekt immer die gleichen Objekte erzeugt werden müssen, um die gleichen Abhängigkeiten abzudecken. Weiterlesen

Erstellen und Auslesen eigener internationalisierter Ressourcen

Die Internationalisierung von Webprojekten ist ein Thema, dass in der Entwicklung schon sehr früh bedacht werden sollte. Selbst wenn in einem Projekt anfangs noch keine Pläne dafür vorliegen, ist es nicht gesagt, dass dies immer so bleiben wird. Weiterlesen

Annotations in PHP

So ziemlich jeder ist schon einmal auf die sogenannten Annotations in PHP-Klassen gestoßen: Metadaten zu Methoden oder Properties, welche zur Laufzeit wie von Zauberhand plötzlich Bestandteil von PHP-Code werden können. Besonders bekannt sind die Annotations von phpDocumentor, welche zu einer kleinen Dokumentation des Codes ausgewertet werden können. Die Annotations zu einer Methode sehen bei phpDocumentor zum Beispiel so aus: Weiterlesen

Locale-Falle mit IntlCalendar::fromDateTime()

Mit PHP 5.5 wurde auch die Extension für die Internationalisierung um neue Klassen erweitert. Eine besonders interessante Erweiterung ist die Klasse IntlCalendar, in der verschiedene neue Funktionen bereitgestellt werden um mit Lokalisierungen von Jahren, Wochen oder Tagen umzugehen zu können. Dabei handelt es sich jedoch nicht um Besonderheiten in der Darstellung von Zeit, sondern mehr um deren Betrachtung. In Deutschland sehen wir den Montag als Anfang der Woche an während es in den USA der Sonntag ist. Ebenso wird dank der Lokalisierung bei der Erstellung eines IntlCalendar-Objekts die Auswahl zwischen gregorianischem und julianischem Kalender abgenommen. Das Ganze funktioniert aber auch nur, wenn die Lokalisierung stimmt. Weiterlesen

Warum Vagrant eine neue VM erstellt anstatt die vorhandene aus dem Ruhezustand zu holen

Wer mit Vagrant arbeitet kann sich an den Vorteilen einer Virtual Machine erfreuen. Einmal gestartet baut sich je nach Konfiguration das System auf, installiert über die Provisioners die notwendige Software die man zusätzlich braucht und nach einer vom Umfang der Software abhängigen Wartezeit hat man ein fertiges Entwicklungssystem. Hiermit ist es für jeden sehr einfach sich ein System aufzubauen welches dem auf der Productionseite ähnlich oder sogar gleich aufgebaut ist. Und wenn die Virtual Machine nicht mehr verwendet wird, kann sie in den Ruhezustand versetzt werden um sie am nächsten Tag ohne lange zu warten wieder zu starten. Weiterlesen

QTTabBar: Mehr Funktionen für den Windows Explorer

Wenn man sieht wie sich die Dateimanager anderer Systeme gegenüber dem Windows Explorer entwickelt haben, so frage ich mich doch immer wieder warum es von Microsoft versäumt wurde seinen eigenen Dateimanager um so etwas einfaches wie Reiter zu erweitern. Um so besser ist das es immer noch genug Do-It-Yourself Programmierer gibt, die sich den fehlenden Funktionalitäten annehmen wie bei dem Projekt QTTabBar. Von den vielen Möglichkeiten, die diese Erweiterung bietet, möchte ich aber nicht die Reiter hervorheben sondern eine Funktion, die vielleicht der eine oder andere Entwickler nützlich findet: Das Ausführen eigener Programme bzw. Scripte. Weiterlesen