Objectkopie bei Parameterübergabe erzwingen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Objectkopie bei Parameterübergabe erzwingen

    Hallo Zusammen,

    soweit ich weiß, wird seit PHP5 immer eine Reference anstatt einer Kopie übergeben, wenn man Variablen an eine Funktion übergibt. Kann man das im Einzelfall auch unterbinden?

    Mein Problem sieht (etwas vereinfacht) wie folgt aus:
    Ein Object wird an eine Datenbankzugriffsklasse übergeben. Dort werden einige Werte des Objects umformatiert, bevor die Daten in die DB gespeichert werden. Das sieht u.a. so aus:
    PHP-Code:
    $obj->value $this->formatValue($obj->value); 
    D.h. ich schreibe die Änderungen direkt in das Object zurück. Wenn ich nun aber nach dem Speichern das Object (außerhalb der Datenbankzugriffsklasse) in meinem Code weiter verwende, haben sich auch hier die Werte geändert.

    Ich vermute, dass liegt daran das eine Reference statt einer Kopie des Objects übergeben wird. Gibt es eine Möglichkeit das gezielt zu unterbinden und eine Kopie zu erzwingen?

    Hat jemand einen Vorschlag?

    cu cyro

  • #2
    Ich verstehe dein Problem nicht ganz, aber evtl. willst du Objekte klonen: http://de.php.net/clone
    [FONT="Helvetica"]twitter.com/unset[/FONT]

    Shitstorm Podcast – Wöchentliches Auskotzen

    Kommentar


    • #3
      Du solltest solche Werte nicht überschreiten, wenn es nicht zum Funktionsumfang der Funktion gehört! Sauberer wäre, die Werte in einer eigenen Variablen zu halten oder das Objekt vorher intern zu klonen!

      Kommentar


      • #4
        ja, perfekt. Danke euch beiden!

        An clonen hab ich überhaupt nicht gedacht. Damit kann ich aber nun bequem eine Kopie innerhalb der Funktion erstellen und muss nur eine Zeile Code einfügen.

        cu
        cyro

        Kommentar

        Lädt...
        X