Christian Kruse: Probleme Geltungsbereich von Variablen

Beitrag lesen

Moin Bobby,

[… $this->QueryVars wird kopiert in $QueryVars und dann verändert …]
Soweit so gut. Nun aber rufe ich eine andere Methode im Model auf. Zum Beispiel getByName(). In dieser kopiere ich wieder die $this->queryVars-Variable. Nun staune ich, dass die $this->QueryVars nun der $queryVars-Variable aus der vorher aufgerufenen Variable entspricht.

In PHP werden Objekte (seit Version 4 IIRC) immer „by reference“ übergeben (es sind nicht wirklich technisch PHP-Referenzen, aber praktisch kann man das so vereinfachen – wenn dich die technischen Details interessieren, schau dir http://php.net/manual/en/language.oop5.references.php an). Das bedeutet, dass Änderungen, die du in einer Funktion machst, die das Objekt per Parameter bekommt, auch außerhalb der Funktion sichtbar sind. Wenn du das verhindern willst, musst du eine Kopie erzeugen.

Ansonsten noch ein kleiner Rat: verschwende deine Zeit nicht darauf, ein eigenes ORM zu schreiben. Benutze ein bereits existierendes.

LG,
 CK