Tach!
Der Hash Slice Hack in Perl geht so, daß anstelle eines Wertes für einen Schlüssel ein Array von Werten für ein Array von Schlüsseln geliefert wird. Und zwar in genau derselben Reihenfolge. Aber offensichtlich gibt es sowas in PHP gar nicht. Für DB Anwendungen jedenfalls ist sowas ungemein praktisch.
Die Daten stecken in einem Objekt. Wenn nur ein paar Felder davon genommen werden sollen, müsste man einen Objekt-Slice erstellen oder das Objekt erst in ein Array konvertieren, um davon dann einen Teil herauszunehmen. So nett ein Array-Slice auch wirken mag, muss man hier also erst die Gegebenheiten anpassen, um es überhaupt nutzen zu können.
Wenn es lediglich darum geht, eine Liste von Eigenschaftsnamen (als Magic Strings) anzugeben, dann kann man das auch als Array of Strings tun und es der aufgerufenen Funktion überlassen, über diese zu iterieren und die entsprechenden Daten aus dem Objekt für das Statement zu besorgen. Die Daten als einen Ausschnitt aus einem Array vorliegen zu haben, um dann lediglich mit einem Join zusammenzufügen, mag verlockend aussehen. Aber zum einen ist einen Liste von Eigenschaften anzugeben nicht aufwendiger als eine solche Liste für einen Array-Slice zu notieren. Zum anderen ist ein simples Join als Folgeverarbeitung nicht ausreichend, weil es den Kontextwechsel unberücksichtigt lässt. Da müsste man bei der Verarbeitung des Slices etwas mit Callback haben, um den Wert korrekt maskieren zu können.
Da halte ich es für einfacher und flexibler eine simple Schleife über das Array der Eigenschaftsnamen durchzulaufen. Letzten Endes ist das Join in Verbindung mit dem Array-Slice nur Syntactic Sugar, der in diesem Fall noch dazu ein unbrauchbares Ergebnis liefert, wenn man daraus ein herkömmliches SQL-Statement erzeugt.
Der Array-Slice-Voschlag berücksichtigt zudem auch nicht, dass die RolfB-Methode ein maßgeschneidertes Vorgehen für die verschiedenen Datentypen ist, die man auch problemlos um weitere Dinge ergänzen kann, zum Beispiel eine Prüfung des tatsächlichen Datentypes oder eines Wertebereiches.
dedlfix.