php.de

Zurück   php.de > Webentwicklung > Software-Design

Software-Design Diskussionen auf Profi-Niveau: PHP Lösungen auf konzeptioneller Ebene

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 1 Stimmen, 5,00 durchschnittlich.
Alt 04.05.2011, 09:17  
Erfahrener Benutzer
 
Registriert seit: 30.07.2008
Beiträge: 1.169
PHP-Kenntnisse:
Fortgeschritten
xm22 sorgt für eine eindrucksvolle Atmosphärexm22 sorgt für eine eindrucksvolle Atmosphärexm22 sorgt für eine eindrucksvolle Atmosphäre
Standard OOP - Rekursive Verknüpfungen

So, ich hoffe mal, dass das hier rein passt - Ich habe konkret zu meiner Frage noch nichts im Forum gefunden:

Beruflich arbeite ich mit Magento und hier wird folgendes ziemlich viel praktiziert: Und zwar werden Objekte rekursiv mit einander verknüpft. Das sieht dann - stark vereinfacht - so aus:

PHP-Code:
class KlasseA {
    public 
$obj null;
}
class 
KlasseA {
    public 
$obj null;
}
$objA = new KlasseA();
$objB = new KlasseB();

$objA->obj $objB;
$objB->obj $objA;

//Bsp.
$objA->obj->obj->obj 
Das ist in manchen Fällen ganz praktisch, allerdings habe ich das bisher immer zu vermeiden versucht, allerdings ohne, dass ich jetzt einen Grund dafür nennen könnte. Wie steht ihr dazu?
xm22 ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 04.05.2011, 09:42  
Erfahrener Benutzer
 
Registriert seit: 07.12.2009
Beiträge: 843
PHP-Kenntnisse:
Fortgeschritten
chorn befindet sich auf einem aufstrebenden Ast
Standard

Die Sprache kann's - wenn du es brauchst, setz es ein.
chorn ist offline   Mit Zitat antworten
Alt 04.05.2011, 09:48  
erc
Erfahrener Benutzer
 
Registriert seit: 02.01.2009
Beiträge: 730
PHP-Kenntnisse:
Fortgeschritten
erc wird schon bald berühmt werden
Standard

Wenn es nötig ist wieso nicht? Das Ziel bei so einem Konstrukt ist ja nicht die Rekrusion sondern die Komuikation der Objekte untereinander.
erc ist offline   Mit Zitat antworten
Alt 04.05.2011, 10:28  
Erfahrener Benutzer
 
Registriert seit: 30.07.2008
Beiträge: 1.169
PHP-Kenntnisse:
Fortgeschritten
xm22 sorgt für eine eindrucksvolle Atmosphärexm22 sorgt für eine eindrucksvolle Atmosphärexm22 sorgt für eine eindrucksvolle Atmosphäre
Standard

Ja, dazu tendiere ich auch. Ich weiß, ehrlich gesagt, auch nicht, warum ich da bisher so eine Abneigung hatte. Vermutlich weil ich in meiner Anfangszeit Probleme hatte, wenn ich bei solchen Konstrukten var_dump oder print_r benutzt habe...
xm22 ist offline   Mit Zitat antworten
Alt 04.05.2011, 10:28  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.563
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

im Grunde hast du so eine einfach verkettete Liste der Objekte .. spart jedenfalls Speicher gegenüber einer Datenstruktur, die deine Objekte irgendwie in Listenform enthält (um nicht Array zu schreiben)
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Alt 04.05.2011, 10:39  
Neuer Benutzer
 
Registriert seit: 03.05.2011
Beiträge: 5
PHP-Kenntnisse:
Fortgeschritten
bad manner befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von xm22 Beitrag anzeigen
Ja, dazu tendiere ich auch. Ich weiß, ehrlich gesagt, auch nicht, warum ich da bisher so eine Abneigung hatte. Vermutlich weil ich in meiner Anfangszeit Probleme hatte, wenn ich bei solchen Konstrukten var_dump oder print_r benutzt habe...
Ging mir genauso, ich hatte teil schon ein Interface eingebunden, dass bei meiner eigenen ~var_dump() Klasse dann diesen Rattenschwanz unterbunden hat.

Sehr mächtig finde ich die Funktion der Referenzierung, wenn du Bäume aus einer flachen Hierarchie (Datenbank) einliest. Schadet also nichts, wenn du es nicht übertreibst.
bad manner ist offline   Mit Zitat antworten
Alt 04.05.2011, 10:49  
Erfahrener Benutzer
 
Registriert seit: 30.07.2008
Beiträge: 1.169
PHP-Kenntnisse:
Fortgeschritten
xm22 sorgt für eine eindrucksvolle Atmosphärexm22 sorgt für eine eindrucksvolle Atmosphärexm22 sorgt für eine eindrucksvolle Atmosphäre
Standard

Nach diesen Antworten ist eine ziemlich Tendenz pro Verkettung zu sehen. Danke für eure Kommentare
xm22 ist offline   Mit Zitat antworten
Alt 04.05.2011, 10:51  
Erfahrener Benutzer
 
Benutzerbild von lstegelitz
 
Registriert seit: 07.09.2009
Beiträge: 4.005
PHP-Kenntnisse:
Fortgeschritten
lstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nett
Standard

Was du da gebaut hast, nennt man auch "Zirkelreferenz". Solche Konstruktionen können verhindern, das ein Objekt vom GC abgeräumt wird, weil es noch referenziert wird...
PHP-Code:
$objA = new KlasseA();
$objB = new KlasseB();

$objA->obj $objB;
$objB->obj $objA;

unset(
$objA);
unset(
$objB);

// jetzt gibt es ein Memoryleak. $objA und $objB sind nicht mehr direkt verfügbar, 
// allerdings existieren beide Objekte noch, da sie sich gegenseitig referenzieren. 
// Man selber kommt nicht mehr an $objA und $objB heran, aber der GC kann den
// Speicher auch nicht freigeben, eben weil die Objekte noch referenziert werden. 
In PHP ist das halb so wild, weil nach dem Requestloop eh alles abgeräumt wird, in Java z.B. kann man sich so aber Memory Leaks einbauen, wenn man nicht aufpasst. Es ist durchaus möglich, ein Objekt zu "verlieren".
__________________
Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.
lstegelitz ist offline   Mit Zitat antworten
Alt 04.05.2011, 10:53  
Erfahrener Benutzer
 
Registriert seit: 30.07.2008
Beiträge: 1.169
PHP-Kenntnisse:
Fortgeschritten
xm22 sorgt für eine eindrucksvolle Atmosphärexm22 sorgt für eine eindrucksvolle Atmosphärexm22 sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
"Zirkelreferenz"
Stimmt - Das passt auch eher zur Bedeutung..
xm22 ist offline   Mit Zitat antworten
Alt 04.05.2011, 14:44  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.994
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
spart jedenfalls Speicher gegenüber einer Datenstruktur, die deine Objekte irgendwie in Listenform enthält (um nicht Array zu schreiben)
Ist das so?
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Website in OOP: Wie am besten vorgehen? GreenDelta PHP Einsteiger 13 29.01.2011 12:25
[Erledigt] OOP - Stil-Frage zur Objekterzeugung Baltasar PHP Tipps 2010 7 24.08.2010 17:39
OOP - Mysql Abfragen machen chief-thomson PHP Tipps 2010 10 10.06.2010 13:59
Einstieg in die OOP + Frage ob mein Gedankengang richtig ist Rikaan PHP Tipps 2010 5 19.04.2010 13:56
[Erledigt] Suche: OOP Code Jens P. Scriptbörse 9 24.03.2010 12:51
gleich oop lernen oder erst mal prozedural programmieren? Voltage PHP Tipps 2010 7 22.01.2010 16:46
Frage zu OOP Klassenplanung Yanko PHP Tipps 2010 3 21.01.2010 09:27
100% OOP wirklich sinnvoll ? Pehapeh PHP-Fortgeschrittene 31 04.12.2009 11:19
Was bringt OOP wenn Objekte nach jeder Seite sterben? majorbenks PHP Tipps 2009 9 18.11.2009 14:11
Eure Tipps/Hinweise/Empfehlungen zum Thema Modellierung und OOP ChillSn Off-Topic Diskussionen 1 30.09.2009 15:19
[Erledigt] OOP & PHP5 Buchempfehlung? boernard PHP Tipps 2009 2 26.02.2009 18:32
Wer hilft mir bei OOP? echo Beitragsarchiv 27 23.02.2009 16:12
OOP verstanden? stayInside PHP Tipps 2009 4 24.01.2009 02:57
MVC vs. herkömmliches OOP stayInside PHP Tipps 2008 5 26.11.2008 22:47

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
rekursion in oop, mysql rekursive verknüpfung, oop rekursion, php speicher freigeben objekt magento, php negative schleife, rekursive verknüpfungen, rekursiven verknüpfungen, rekursive verknüpfung, php rekuriv ein objekt baum, php rekursiv verzeichnis oop

Alle Zeitangaben in WEZ +2. Es ist jetzt 01:35 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum