Hellihello
Iteration mittels foreach über die public-vars einer Klasseninstanz geht doch aber auch ohne, oder versteh ich was falsch?
Es ist nicht immer wünschenswert, über alle Eigenschaften zu iterieren. Es gibt je nicht nur Daten sondern auch Metadaten, die so eine Klasse speichern kann.
Gut, sowas ist vermutlich dann am Plausibelsten in einer Beispielanwendung (vermutlich irgendwo auch dann im ZF). Ich hatte bisher bei meinem Gehirnjogging zu allgemeinen Datensatzstrukture dann überlegt
class Datensatz
{
$meta_data = array();
$data = array();
}
so dass dann über $user_instance->data["some_item1"] bzw. entsprechende Rückgabemethode zuegriffen bzw. über das data-Array oder in PHP-Bedeutung Hash (=assoziatives Array) iteriert werden könnte.
Unbsehen glaub ich oder nehm zur Kenntnis, dass vermutlich auch in umfangreicheren Zusammenhängen da abstraktere Möglichekeiten sinnvoll sind.
Einsteigerartikel, meintest du damit http://www.php.net/~helly/php/ext/spl/? Sonst fand ich erstmal nischt.
Im rechten Frame etwas runterrollen, Punkt 9 meinte ich.
Fein, jetzt habichs.
RecursiveItereatr extends Iterator. Das ist klar. Ein "interface" wiederum kann nur "implementiert" werden. Wobei aber Implementierung eigentlich bedeutet, dass die implementierte Interfaceklasse lediglich (!) vorschreibt, welche Methoden die implementierende Klasse enthalten muss. Intuitive Frage dazu: was soll das dann? Fehlerkontrolle?
Wenn eine Klasse ein Interface implementiert, dann ist sichergestellt, dass die im Interface definierten Dinge in der implementierenden Klasse vorhanden sind. Ein Anwender kann ein ihm übergebenens Objekt auf instanceof Interfacename testen und sich dann sicher sein, dass die im Interface vereinbarten Dinge vorhanden und zugreifbar sind.
Also eben Code-Sichheit. Vermutlich steht meinem Verständnis bzw. stand immer im Wege, dass ich dachte oder hoffte, über die Implementierung eines Interfaces gleich auch Methoden mitzuimplementieren (was ja sowas wie eine multiple Vererbung wäre, bzw. dass eine Klasse von mehreren Klassen erben könnte).
Dank und Gruß,