International Visitors: This blog is mainly dedicated to web development, sharing knowledge and resources. Most older entries are available only in German, please switch to English to see the English entries.
Review: 2018
Es ist ruhig um das Blog geworden, dennoch möchte ich das Jahr 2019 mal wieder einen kleinen Rückblick machen, wie schon 2017, 2016 und 2015.
Da 2018 keine Beiträge hier erschienen sind und der Tracker abgeschaltet ist, gibt es allerdings keine Blog-Statistiken, stattdessen eine Übersicht, wo anderswo Beiträge von mir zu finden sind.
Seit längerem veröffentliche ich vermehrt im Blog meiner Firma integer_net, überwiegend auf Englisch: https://www.integer-net.com/blog/
Continue reading “Review: 2018”
MageTestFest – Eine einzigartige Konferenz und einmalige Gelegenheit
Wenn Du dich für Software Testing und/oder Magento-Entwicklung interessierst, kommt das für interessanteste Event des Jahres näher: MageTestFest in Amerfoort (NL)!
- 15. Nov: Workshop PHPUnit (Sebastian Bergmann)
- 16. Nov: Workshop DDD (Mathias Verraes)
- 17. Nov: Konferenz-Tag (Agenda)
- 18. Nov: Magento Contribution Day (Hackathon)
Continue reading “MageTestFest – Eine einzigartige Konferenz und einmalige Gelegenheit”
TDD Kata 14 – Exclamation Mark Series
PHP 7: Typsichere Arrays von Objekten
Mit PHP 7 kann man sich dazu entscheiden, typsichereren Code zu schreiben als zuvor, dank skalaren Type Hints und Rückgabetypen.
function repeat(string $text, int $times) : string;
Aber was ist mit Arrays? Es gibt immer noch nur den generischen “array” Type Hint, man kann nicht spezifizieren was das Array enthält. Für die IDE kann man PhpDoc Kommentare hinzufügen:
/** * @return User[] */ function allUsers() : array;
Jetzt können IDEs wie PhpStorm mit Code-Vervollständigung für Elemente des zurückgegebenen Arrays helfen. Aber wir können nicht von Prüfungen zur Laufzeit profitieren, wie mit echten Type Hints.
Für Argumente gibt es einen partiellen Workaround mit variadischen Argumenten. Nehmen wir die folgende Funktion:
/** * @param User[] $users */ function deleteUsers(array $users);
Mit variadischen Argumenten können wir sie umschreiben zu:
function deleteUsers(User ...$users);
Die Benutzung ändert sich auch, zu deleteUsers(...$users);
Bei diesem Aufruf wird das Argument $users
in einzelne Variablen “unpacked”, und in der Methode selbst wieder in ein Array $users
“packed”. Jedes Element wird dabei auf den Typ User
validiert. $users
kann auch ein Iterator sein, er wird dann beim Aufruf in ein Array konvertiert.
Leider gibt es keinen entsprechenden Workaround für Rückgabetypen, und es funktioniert nur mit dem letzten Argument.
Siehe auch: Type hinting in PHP 7 – array of objects
Ich nutze diese Technik oft in PHP 7 Code, aber es gibt noch eine andere, die die genannten Schwächen nicht hat:
Continue reading “PHP 7: Typsichere Arrays von Objekten”