|
|
|
|
|
|
|||||||
| PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen |
|
|
|
LinkBack | Themen-Optionen | Thema bewerten |
|
|
#1 (permalink) |
|
Gast
Beiträge: n/a
|
Hallo,
als Neuling hier am Board, möchte ich gerne eine Diskussion anstoßen um mal eine Methode zu vergleichen, mit der ich arbeite. Nehmen wir an ich verwende ein multidimensionales Array als Datenspeicher. Dieses Array ist jetzt eine Member-Variable einer instanzierten Klasse. Saubere OOP verbietet jetzt natürlich den direkten Zugriff auf diese Member-Variable wie z.B.: Code:
$object->multiArray['auto']['tuer']['farbe']; Code:
$object->getVar(array('auto', 'tuer', 'farbe'));
Code:
function getVar($position) {
// Basis-Position
$value =& $this->multiArray;
// Geht schrittweise durch das von getVar() übergeben Objekt durch.
for ($i = 0; $i < count($position); $i++) {
if (!$value =& $this->browseArray($value, $position[$i])) {
// Falsche Positionsangabe
return false;
}
}
// War die Positionsangabe korrekt, enthält $value jetzt den Inhalt des letzten Elements.
return $value;
}
function &browseArray(&$array, $target) {
if (is_array($array)) {
if (array_key_exists($target, $array)) {
return $array[$target];
}
}
return false;
}
Freue mich über jeden Kommentar. Gruß Ensis |
|
|
|
|
|
PHP Code Flüsterer
Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten
|
|
|
|
#3 (permalink) | |
|
Gast
Beiträge: n/a
|
Zitat:
PHP-Code:
|
|
|
|
|
#4 (permalink) | |
|
Erfahrener Benutzer
Registriert seit: 15.08.2004
Beiträge: 2.473
![]() |
Zitat:
Falls man beim Zugriff auf die Variable noch etwas ausführen will, kann man in PHP 5 immer noch Interzeptoren verwenden.
__________________
mod = master of disaster |
|
|
|
|
|
|
#5 (permalink) |
|
Gast
Beiträge: n/a
|
@fantast, hast du da ein Beispiel, wie du das lösen würdest?
@meikel, das gesamte Array geliefert zu bekommen ist nicht der Sinn der Sache. Die erwähnte Methode erlaubt den Zugriff auf ein einzelnes Element eines multidimensionalen Arrays. @Waq, ich weiß, der ewige Zwiespalt. Aber ich würde den Nutzen nicht unterschätzen und so läuft es ja auch. Aber wie sollen Interceptors bei der dynamischen Navigation durch das Array helfen? |
|
|
|
#6 (permalink) | |
|
Erfahrener Benutzer
Registriert seit: 15.08.2004
Beiträge: 2.473
![]() |
Zitat:
Ausserdem finde ich, dass es die Sache nicht hübscher macht, wenn man um eine undefinierte Datenstruktur ein einfaches Interface setzt, ohne dass dieses die Datenstruktur oder den Zugriff darauf vereinheitlicht. Mal abgesehen davon, dass getter und setter sowieso nicht unumstritten sind. Ich finde sie reichlich sinnlos. http://c2.com/cgi/wiki?AccessorsAreEvil
__________________
mod = master of disaster |
|
|
|
|
|
|
#8 (permalink) |
|
Erfahrener Benutzer
|
warte lass mich mal ueberlegen.
PHP-Code:
#edit ich seh grad, man muesste noch nich mal mit referenzen arbeiten. das klappt auch mit "einfachen" variablen. ach ja und ich find accessor methods seeehr sehr hilfreich und sinnvoll. die wegzulassen spart zwar sicherlich code und zeit, aber erhoert dadurch den wartungsaufwand einer anwendung erheblich...
__________________
Was ist validität? |
|
|
|
|
|
#9 (permalink) | |
|
Gast
Beiträge: n/a
|
Zitat:
http://test.php-help.info/class-5/ (Quelltext wird angezeigt) btw: hoffentlich taucht das Beispiel nicht irgend wo mal als 'sinnloser Code' auf. |
|
|
|
|
#10 (permalink) | |
|
Erfahrener Benutzer
Registriert seit: 15.08.2004
Beiträge: 2.473
![]() |
Zitat:
Und wenn man es mit dem Design nicht so ernst nimmt, wozu überhaupt Accessoren? Zur Not kann man deren Funktionalität noch durch Interzeptoren nachtragen. Wobei ich finde, dass dieser Code nicht nur riecht, sondern richtiggehend stinkt. Für eine Datenstruktur wie einen Baum ist das einfach keine geeignete Zugriffsmethode. Bäume verarbeitet man rekursiv, zum Zugriff eignen sich z.B. verschachtelte Objekte, vorzugsweise lazy instanziiert. Auf so ein unstrukturiertes Interface Accessoren draufzusetzen und dann zu meinen, "guck mal, tolles OOP" halte ich einfach für Unsinn. Hier wird mit viel zu grossem Aufwand an unwichtigen Dingen rumgedoktert und die eigentlichen Probleme werden ignoriert.
__________________
mod = master of disaster |
|
|
|
|
|
|
|
|
PHP Code Flüsterer
Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten
|
|
|
| Themen-Optionen | |
| Thema bewerten | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Mehrere Arrays summieren | buggybugga | PHP-Fortgeschrittene | 8 | 22.07.2008 11:51 |
| Zugriff beschränken | paper | PHP Tipps 2008 | 9 | 04.05.2008 12:13 |
| Arrays sortieren, Bezeichnung, Preis | Ticos | PHP Tipps 2006 | 4 | 07.09.2006 19:37 |
| Arrays kreuzen | PHP Tipps 2006 | 13 | 08.03.2006 11:36 | |
| Zugriff auf postgresql-db mit php | PHP Tipps 2006 | 6 | 25.01.2006 09:29 | |
| [Erledigt] 2 Arrays miteinander vergleichen | PHP Tipps 2007 | 3 | 17.12.2005 16:54 | |
| Verzeichnis (Dateien) schützen aber per PHP zugriff zulassen | Server, Hosting und Workstations | 2 | 16.10.2005 10:13 | |
| Wie Ordner und Inhalt vor unberechtigten Zugriff schützen | Riot | PHP Tipps 2005-2 | 30 | 06.10.2005 21:18 |
| Problem beim vergleichen von 2 Arrays | PHP Tipps 2005-2 | 1 | 06.10.2005 14:25 | |
| Zugriff auf phpmyadmin | PHP Tipps 2005 | 1 | 28.02.2005 18:41 | |
| Kombination von mehreren Arrays | PHP-Fortgeschrittene | 27 | 18.02.2005 23:33 | |
| [Erledigt] Letzter zugriff von Datei anzeigen | PHP Tipps 2005 | 13 | 17.01.2005 18:20 | |
| Erkennung von Arrays in Strings | PHP-Fortgeschrittene | 15 | 07.12.2004 13:00 | |
| 2 arrays in abhängigkeit ??? | PHP Tipps 2004 | 2 | 11.08.2004 21:19 | |
| Werte eines Arrays in eine MySQL schreiben | PHP Tipps 2004 | 2 | 28.06.2004 13:32 | |

Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.