[quote=Der Gnarl,13.10.2006, 12:49][...]
Und welchen Unterschied machts, wenn ich direkt in des Array reingreife oder Klassenmethoden benutze. Ich brauch doch nur den Wert, der da steht und weiter nichts. Ist das schneller, besser oder nur eine rein ideologische Kiste?[/quote]
Es ist einfach sauberer, die Klassenmethoden zu benutzen.
Nehmen wir z.B. die von Dir verwendete Methode
answer. Wenn Du direkt auf das Attribut zugreifst, bekommst Du eine Arrayreferenz, mit der Methode bekommst Du das gleich in ein Array dereferenziert.
Besonders bei setter-Methoden ist es wichtig, diese zu verwenden und nicht auf das Attribut direkt zuzugreifen. Häufig werden noch irgendwelche Überprüfungen oder Berechnungen in der setter-Methode verwendet.
In diesem Beispiel ist es auch eine relativ flache Struktur. Jetzt stell Dir aber mal vor, es gibt Klassen die Bauen so eine Struktur auf:
attr1 => {hallo => {int => {en => 'hello', es => 'hola'}, de => {hessisch => 'gude'}}}
Da ist es sehr unschön, mit
$obj->{hallo}->[int}->{en} zuzugreifen, da ist es doch besser mit
$obj->int_hallo('en') darauf zuzugreifen. Das bietet Dir auch eine gewisse Sicherheit. Wenn Du
$obj->{halo}->{int}->{en} benutzt, bekommst Du einfach ein 'undef' zurück. Dir fällt also der Schreibfehler nicht auf. Wenn Dir aber der gleiche Schreibfehler bei der Methode passiert, also
$obj->int_halo('en') bekommst Du gleich eine Fehlermeldung. Die Methode überprüft vielleicht auch noch, ob es
en überhaupt als Schlüssel gibt.
Nur mal so als Beispiel warum man die Methoden verwenden sollte...\n\n
<!--EDIT|renee|1160737713-->