Sie befinden sich hier im Forenarchiv von phpforum.de wenn Sie direkt ins Forum möchten, klicken Sie bitte hier. Zur Startseite kommen Sie hier.

Die Referenzen sind mir etwas unverstaendlich

Hi Leute.
Ich habe gerade noch einmal nachgelesen wie das mit den Referenzen funktioniert aber ich verstehe es nicht vollstaendig.
Wenn ich also beispielsweise folgendes mache
$foo = &new bar ();
und irgendwo anders
$foo2 = &new bar ();
Was genau bewirkt das dann? Wird nun beim ersten &new eine Instanz von bar erzeugt und beim Zweiten einfach nur eine Referenz auf die Erste oder sind das doch wieder 2 unabhaenigige Instanzen?
Wenn es eine Referenz ist was genau macht dann __construct? Wird das "ubersprungen"?

Hier gehts zum Orginal Eintrag "Die Referenzen sind mir etwas unverstaendlich" im Forum

Antworten

Das sind 2 unabhängige Instanzen.

Wenn Du mit PHP5 arbeitest, solltest Du Referenzen aber besser ignorieren und erst gar nicht verwenden, weil sie nach wie vor missverständlich implementiert sind.


2.

Danke fuer die unheimlich schnelle Antwort oimel :)
Wie kann man das dann machen? Ich erklaere das mal was ich eigentlich will.
Ich habe verschiedene Klassen fuer verschiedene Aufgaben. Eine Counterklasse, eine Treeklasse, eine Templateklasse, Userklasse, ACL usw usf :)
Jede dieser Klassen benoetigt eine Datenbankverbindung die ich mittels PHP_PDO realisiere.
Aber jetzt dachte ich mir dass das ganz schoen viel unnoetigen Speicher kostet wenn ich jede Klasse ihre eigene PDO-Instanz erstellen lasse und wollte das eben mittels Referenz auf eine Einzige reduzieren.
Kapier aber nicht wie man das sinnvoll macht und jetzt scheint mir es so als waer das garnicht moeglich :/


3.

Dafür bietet sich das Singleton Pattern an.


4.

Danke Oliver Albers fuer diese Info. Aber bitte sage mir noch ob ich das richtig verstanden habe.
Die staticpdo-Klasse (siehe weiter unten) kann man nicht normal instanzieren und muss es auch garnicht da man direkt nach dem includen schon die Klassenmethode singleton und die Klassenvariable $db zur Verfuegung hat. Diese Methode prueft bei jedem Aufruf von singleton ob $db ein Objekt ist. Ist $db ein Objekt braucht man nicht neu instanzieren ansonsten einmal instanzieren in der Klassenvariable $db ablegen und diese immer wieder zurueckgeben. Hier mal ein Stueckchen Code zu dem eben gesagten.
class.staticpdo.php
Code:                   In Zwischenablage kopieren (nur IE)
1">

test.staticpdo.php
Code:                   In Zwischenablage kopieren (nur IE)
2">

Ist das soweit richtig oder mache ich irgendwo einen Fehler?


5.

Das sieht doch gut aus, oder hast Du noch ein Problem damit?


6.

Ich glaube nicht. Aber ich hab das halt heute zum ersten Mal so gemacht da muss man schon fragen ob man es richtig verstanden hat.


Hier gehts zum Orginal Eintrag "Die Referenzen sind mir etwas unverstaendlich" im Forum
 
phpforum.de | Impressum