Moin!
Tach!
Wenn ich als Leser von Code darüber nachdenken muss, ob die vielfältigen "Nebenwirkungen" von empty() eventuell vom Programmierer in Betracht gezogen wurden, oder aber die Gefahr besteht, dass sie unerwünscht sind, dann lese ich schlechten Code, der seine Intention nicht gut kommuniziert.
Wenn ich als Leser von Empfehlungen selbst nachprüfen muss, welche der vielen Pakete vom Empfehler in Betracht gezogen würden, oder die Gefahr besteht, dass ich ein unbrauchbares erwische, dann lese ich eine schlechte Empfehlung, mit der das eigenen Wissen nicht gut kommuniziert wird.
Wir bewegen uns, zumindest bei dem Beispielcode hier im Thread bzw. auch im Wiki, auf niedrigem PHP-Niveau mit ganz wenig OOP. Da kann ich kaum guten Gewissens \Zend\Form empfehlen (zu viele Abhängigkeiten, zu komplex für den Nichtnutzer der Zend-Komponenten. Dasselbe gilt für Symfony, Laravel, ...
Es gibt bei packagist.org außerdem zahlreiche Standalone-Bibliotheken, die man nutzen kann, beispielsweise siriusphp/validation.
Der erste Blick: "Grmpf! - Stringly typed!" Wenn Aktionen und Feldnamen nicht als Bezeichner sondern als Strings zu notieren sind, gehe ich Gefahr, dass ich mich unbemerkt vertippe. Ich muss die genaue Schreibweise erlernen, wissen oder nachschauen und kann sie nicht zeitsparend und fehlerreduzierend autovervollständigen lassen. Da ist mir ja fast noch empty() die größere Hilfe. Und die Tools meiner IDE (PhpStorm) können mir beim Refactoring nicht oder nur wenig behilflich sein, weil sie nicht wissen können, ob gleiche Strings die gleiche Bedeutung haben.
Alle Validator-Regeln sind als Konstanten in der Klasse \Siriusphp\Validation\Validator verfügbar. Für die Feldnamen bist du selbst als Entwickler verantwortlich. Und die einzelnen Regeln der Validierung implementiert man besser selbst in einer eigenen Klasse mit einem Namen, der dem Nutzungskontext entspricht, also beispielsweise "class UsernameLength extends AbstractValidator", anstatt dass man an jeder Stelle, wo man einen Usernamen validieren möchte, sich die einzelnen Parameter der Prüfung wieder kopiert.
Außerdem bist du mit deiner IDE kein Maßstab - jedenfalls dann nicht, wenn ich mir wie besagt den Code der Beispiele ansehe.
- Sven Rautenberg