Es ist wieder Zeit für eine Lern-Kaffeepause, heute zum Thema Softwaretest! Die fünf Minuten reichen diesmal nur für einen Kurzüberblick, um die verlinkten Artikel alle zu lesen, nehmt euch etwas mehr Zeit.
Framework-agnostische Extensions/Plugins – Iterating Iterators
Der vorerst letzte Teil meiner Blog-Reihe auf integer-net.com über Framework-unabhängigen Code ist draußen: Iterating Iterators.
Vorige Teile
Framework-agnostische Extensions/Plugins – PSR Interfaces
Teil 6 meiner Blog-Reihe auf integer-net.com über Framework-unabhängigen Code ist draußen: Leveraging PSR Interfaces.
Vorige Teile
Design Patterns für Framework-agnostische Extensions/Plugins – Autoloading
Teil 5 meiner Blog-Reihe auf integer-net.com über Framework-unabhängigen Code ist draußen: Using Advanced Autoloading. Dieser ist allerdings nur für die Anbindung von Legacy-Anwendungen relevant, die noch kein Composer-Autoloading nutzen (Magento 1).
Vorige Teile
Design Patterns für Framework-agnostische Extensions/Plugins – View Model
Teil 4 meiner Blog-Reihe auf integer-net.com über Framework-unabhängigen Code ist draußen: Preparing Data For Output
Vorige Teile
Design Patterns für Framework-agnostische Extensions/Plugins – Bridge
Teil 3 meiner Blog-Reihe auf integer-net.com über Framework-unabhängigen Code ist draußen: Building Bridges
Vorige Teile
Design Patterns für Framework-agnostische Extensions/Plugins – Dependency Injection
Teil 2 meiner Blog-Reihe auf integer-net.com über Framework-unabhängigen Code ist draußen: Using Dependency Injection
Vorige Teile
Design Patterns für Framework-agnostische Extensions/Plugins
Meine neue Artikelreihe auf integer-net.com stellt nützliche Design Patterns für entkoppelte Magento Extensions vor, die in zwei Teile geteilt sind: Das Magento Modul und eine Framework-unabhängige (Framework-agnostische) Bibliothek, die für Magento 1 und Magento 2 wiederverwendbar ist. Die selben Prinzipien sind natürlich auch für weitere Frameworks und Anwendungen anwendbar.
Sie wird nicht den Refactoring-Prozess von bestehenden Extensions hin zu diesem Modell behandeln, das ist ein anderes Thema, das ich beim Developers Paradise 2016 in Kroatien präsentieren werde. Bleibt dran!
Im ersten Teil geht es um den Zugriff auf Konfigurationsdaten mit Configuration Value Objects.
Weiterlesen auf integer-net.com → (Englisch)
Zufällige Produkte in Magento anzeigen
Leider ist der Eintrag nur auf Englisch verfügbar.
Comparable Interface für PHP
Vor etwa 5-6 Jahren hatte ich meine “PHP sollte mehr wie Java sein” Phase und habe viel mit Sachen wie String Objekten und Überladen von Methoden experimentiert, was meistens fiese Workarounds erforderte und die meisten Dinge stellten sich auf lange Sicht nicht als sehr praktikabel heraus.
Aber ein Package aus der Zeit gefällt mir immer noch ziemlich gut, und zwar ComparatorTools, was immerhin Platz 2 in den monatlichen PHPclasses.org Innovation Awards belegte. Es stellt Comparable
und Comparator
Interfaces zur Verfügung sowie Funktionen, analog zu den Core Array-Funktionen, die mit diesen arbeiten können.
Interfaces
Die Interfaces ähneln den entsprechenden Java interfaces, außer dass wir keine Generics in PHP haben, so dass nicht garantiert werden kann, dass die verglichenen Objekte den selben Typ haben. Dies muss zur Laufzeit in der Implementierung geprüft werden, sofern nötig. Ein Exception-Typ für diese Fälle ist verfügbar:
interface Comparable { /** * @param object $object * @return numeric negative value if $this < $object, positive if $this > $object, 0 otherwise (if objects are considered equal) * @throws ComparatorException if objects are not comparable to each other */ public function compareTo($object); }
interface Comparator { /** * @param object $object1 * @param object $object2 * @return numeric Negative value if $object1 < $object2, positive if $object1 > $object2, 0 otherwise * @throws ComparatorException if objects are not comparable to each other */ public function compare($object1, $object2); }