Wie Services das Dependency Injection Verhalten der Entwickler beeinflusst haben

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. (mehr …)

eval is evil – Stimmt das?

eval is evil – Stimmt das?

Schon von früh auf wird einem PHP-Programmierer beigebracht, das Sprachkonstrukt eval zu meiden. Dieses führt einen als String übergebenen PHP-Code aus und behandelt diesen wie regulären Code des Projekts. Bereits die PHP-Dokumentation führt aus, dass von der Verwendung dringend abgeraten wird. (mehr …)

eval is evil – Stimmt das?

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:

(mehr …)
Locale-Falle mit IntlCalendar::fromDateTime()

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. (mehr …)

Consent Management Platform von Real Cookie Banner