|
|
|
|
|
|
|||||||
| PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen |
|
|
|
LinkBack | Themen-Optionen | Thema bewerten |
|
|
#11 (permalink) | |||
|
Erfahrener Benutzer
|
Zitat:
Zitat:
wenn du deinen link oben genau laesest, wuerdest du auch folgendes entdecken: Zitat:
__________________
Was ist validität? |
|||
|
|
|
|
|
|
|
PHP Code Flüsterer
Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten
|
|
|
|
#12 (permalink) | |||||
|
Erfahrener Benutzer
Registriert seit: 15.08.2004
Beiträge: 2.473
![]() |
Zitat:
Zitat:
Zitat:
Zitat:
__________________
mod = master of disaster |
|||||
|
|
|
|
|
#13 (permalink) | |||||||
|
Erfahrener Benutzer
|
Zitat:
Zitat:
zweitens: wieso sollte es denn auch ? ich will von aussen eine methode aufrufen, die mir meine variable liefert, nicht erst selbst rekursiv oder iterativ oder sonstewas werden muessen, oder ? Zitat:
Zitat:
ich habe eine klasse, die hat ein paar membervariablen, ob diese einfach lokale variablen sind, oder inner db liegen oder sonstwo ist mir als client doch erstmal voellig egal. ich will halt die variable haben. dazu rufe ich get() auf. wenn diese methode sich dann zur db verbindet, etc. is das doch nur in ordnung ?!? sach an...
__________________
Was ist validität? |
|||||||
|
|
|
|
|
#14 (permalink) | |||
|
Erfahrener Benutzer
Registriert seit: 15.08.2004
Beiträge: 2.473
![]() |
Zitat:
Wenn einem keine bessere Struktur einfällt, lässt man es halt so. Zitat:
Ein ordentlicher Zugriff auf einen Baum könnte so aussehen (aka SimpleXML): PHP-Code:
Ich sehe einfach keinen Grund, warum sich der Aufrufer mit den Array-Indizes rumschlagen sollte, wenn es sich um eine Baumstruktur handelt.
__________________
mod = master of disaster |
|||
|
|
|
|
|
#15 (permalink) |
|
Erfahrener Benutzer
|
gut und dann schau dir bitte nochmal meine funktion an, die ist komplett rekursiv. da ist keine einzige schleife drin...
ausserdem gehst du ueberhaupt nich auf meinen punkt mit den accessors ein. ich gestehe dir zu, dass wenn es moeglich ist eine komplexere struktur zu schaffen, die die accessors ueberfluessig machen wuerde, dieser auch immer der vorzug gegeben werden sollte, aber wieso einfach, wenns auch kompliziert geht, nicht wahr ?
__________________
Was ist validität? |
|
|
|
|
|
#16 (permalink) |
|
Gast
Beiträge: n/a
|
Mann, mann, da hab ich ja was losgetreten.
Um ein paar Sachen klar zu stellen: 1. Mir ist klar, daß das zuerst beschriebene Beispiel nicht der ideale Weg ist, eine Baumstruktur darzustellen. Dafür eignen sich Objekte deutlich besser. Abgesehen davon, daß bis PHP4 die Entscheidung für Objekte auch immer einen großen Performance-Verlust mit sich bringt, ging es aber hier nicht um die Praxisanwendung. Ich wollte einfach wissen, ob jemand eine bessere Methode hat, einen dynamischen Zugriff auf ein multidimensionales Array zu realisieren, da sich Array-Bezeichnungen nicht variabel bilden lassen. 2. Keines der hier gezeigten Beispiele ist wirklich rekursiv, stimmt, sie sind alle iterativ. Die Umsetzung wäre aber nun kein Problem und ändert am Prinzip meines Beispiels nicht viel. @Waq, deinem Link bin ich gefolgt und habe den Artikel mit Interesse gelesen, auch wenn ich dem Autor nicht in allem zustimmen kann. Natürlich werden Accessors zu häufig und oft ohne Sinn eingesetzt. Außerdem bin ich ebenfalls der Meinung, daß der Datenbestand einer Klasse grundsätzlich nicht public zu sein hat, ob über direkten Zugriff oder Accessors ist eigentlich egal. Dafür soll ein Objekt schliesslich ein UI zur Verfügung stellen. Es gibt allerdings Fälle in denen Objekte als Daten-Container fungieren. Nehmen wir mal als Beispiel ein Konfigurations-Objekt, dass eine Konfigurationsdatei parst und den Inhalt der gesamten Applikation (z.B. über Singleton) zur Verfügung stellt. In dem Fall kann man natürlich jede angeforderte Konfigurationsanweisung als Objekt zurück geben, dass die entsprechenden Daten enthält. Gerade in PHP4 halte ich das aber für Overkill. OOP ist meiner Meinung nach im Praxiseinsatz kein starres Konzept, sondern ein Design-Prinzip, mit dem sich viel Arbeit sparen und sauberer entwickeln läßt. Wenn eine Ausnahme im üblichen OOP-Prinzip viel Arbeit sparen kann, fühle ich mich nicht, als hätte ich heilige Regeln übertreten. P.S.: Ich habe hier niemanden rufen hören: 'Guck mal, tolles OOP'. Ich denke den Tonfalls können wir uns sparen, oder? Nachtrag: Habe natürlich ein paar Beiträge vorher zu schreiben angefangen. Man sollte nicht zu viel gleichzeitig machen. ![]() |
|
|
|
#17 (permalink) | |
|
Erfahrener Benutzer
|
ich moechte immernoch darauf hinweisen, dass ich meine funktion sehr rekursiv finde
Zitat:
__________________
Was ist validität? |
|
|
|
|
|
|
#18 (permalink) | |||
|
Erfahrener Benutzer
Registriert seit: 15.08.2004
Beiträge: 2.473
![]() |
Zitat:
Zitat:
Zitat:
__________________
mod = master of disaster |
|||
|
|
|
|
|
#19 (permalink) | |
|
Erfahrener Benutzer
Registriert seit: 15.08.2004
Beiträge: 2.473
![]() |
Zitat:
Also nehmen wir an die bisherige Klasse heisst TreeArray, dann baue ich eine Helper-Klasse TreeArrayTraverser, die eine Referenz auf eine Instanz von TreeArray bekommt und direkt (ohne Accessoren, ist schliesslich eine Schwester-Klasse) auf das Array zugreift. In das Ding implementiert man das gleiche Interface wie vorhin beschrieben, nur mit einer zusätzlich Methode für den Weg zur Wurzel zurück, darauf zuzugreifen sähe so aus: PHP-Code:
Mir fällt einfach kein Fall ein, wo man auf ein unbekanntes Multidimensionales Array durch einen Accessor zugreifen müsste, weswegen ich es nicht so schade finde, dass es dafür scheinbar keine einfache, performante Möglichkeit gibt.
__________________
mod = master of disaster |
|
|
|
|
|
|
#20 (permalink) |
|
Gast
Beiträge: n/a
|
hi,
der erste würdige thread im profi forum denn ich bisher lesen konnte (: die "why accessors are evil" diskusion habe ich schon in diversen foren verfolgt unnd diskutiert. von der theroie her ist das absolut valide und meines erachtens auch richtig die set/get orgien zu unterbinden. es gibt einen grundsatz der damit zusammenhängt : "tell, dont ask". es gibt aber (wie immer) einige ausnahmen (bsp ValueObjects) für diesen grundsatz. das zur theroie. in der praxis aber arbeiten wir mit php - einer scriptsprache die auch noch auf einem webserver läuft und dem prinzip von "share nothing" folgt. das bedeutet für mich einen (manchmal anstregenden) mittelweg zwischen performance und optimaler objektorientierung zu suchen. unsere aufgabe besteht darin schnellstmöglich eine aufgabe zu erledigen und dabei im unterschied zu client applikationen auch noch die gesamte infrastruktur jedesmal neu aufzubauen. das heisst für mich im klartext das ich an einigen stellen meiner applikation bewusst design prinzipien verletze. damit meine ich aber nicht das array problem.. das hat waq schon sehr schön gesagt : das design stimmt da wohl nicht. mir geht es um (jedenfalls für mich) komplexere themen wie zb einem objekt persistenz layer. du gehst ständig auf dem schmalen grad zwischen physikalisch gegebener rechenleistung und guter objektorientierung. für eine normale webseite mit normalem traffic könnte mann das denke ich aberschon hinbekommen. schwieriger wird es mit high traffic seiten oder webanwendungen. hier zählt vor allem anderen die reaktionszeit für den anwender. ich kenn das sogar von mir selbst - wenn irgend eine seite derbe ablahmt muss der content schon richtig sexy sein damit ich die regelmässig besuche. ein ganz praktisches problem sind dabei zb interfaces bei php5. interfaces beschreiben einen quasi einen vertrag den jedes implementierte objekt erüllen muss. gute sache (für einige auch eine mehrfach vererbung lite) das... hat aber auch den haken das mann keine konstruktoren in einem interface deklarieren sollte. falls mann das tut kann die klasse dann immer nur ein interface mit einem konstruktor implementieren.. irgendwie nicht ganz so prall imho. das führt dann wieder zu den heiss geliebten accessoren: PHP-Code:
gruss Sike |
|
|
|
|
|
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 | |
| Besucher kamen über folgende Suchanfragen bei Google auf diese Seite |
| php iteration array baum, php verschachtelte objekte parent finden |

Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.