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.
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.
dedlfix.