Referenz oder clone?

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

  • Referenz oder clone?

    Moin Leutz,

    ich mache es kurz ...


    PHP-Code:
    class {    
        var 
    $bs = array();    
        function 
    getB() {
            
    $this->bs[0] =  new B();                
            return 
    $this->bs[0];
        }
    }


    class 
    {
        var 
    $bata "BEE";
    }

    $a = new A();


    $b1 $a->getB();
    $b3 $b1;

    $b3->bata "BAAA";

    $b2 $a->bs;


    echo 
    "<pre>";
    print_r($b2);   // Ausgabe ist: BAAA
    echo "</pre>"
    Warum ist b3 eine Referenz von b2 (oder b1)? Es wird niemals ein "&" verwendet. Z.B. in der Zeile

    PHP-Code:
    $b3 $b1
    müsste diese Referenz doch aufgehoben werden, oder nicht??


    Gruß
    muh

  • #2
    Das Standardverhalten von PHP4 ist Klonen.
    Das Standardverhalten von PHP5 ist Übergabe per Referenz.

    Welche Version setzt du ein?
    Wir werden alle sterben

    Kommentar


    • #3
      die 5er ...
      okay ... das hatte ich inzwischen schon vermutet ... warum finde ich denn in der doku dazu nichts ...

      und vor allem: wie verhindere ich das?

      Kommentar


      • #4
        Aktiv Klonen!!
        http://www.php.net/manual/de/language.oop5.cloning.php

        -------------
        Und sicherlich steht das in der Doku!!
        Wenn man eine bereits erzeugte Instanz einer Klasse einer neuen Variablen zuweist, wird die neue Variable auf die selbe Instanz zugreifen wie das Objekt, das zugewiesen wurde. Dieses Verhalten ist das selbe, wenn man Instanzen an Funktionen übergibt. Eine Kopie eines bereits erzeugten Objektes erhält man, indem man es klont.
        Aus: http://www.php.net/manual/de/language.oop5.basic.php
        Wir werden alle sterben

        Kommentar


        • #5
          schau dir die methode __clone an.
          http://de.php.net/manual/de/language.oop5.cloning.php
          Slava
          bituniverse.com

          Kommentar


          • #6
            sehr geil leutz!!

            danköööö ;-)

            Kommentar


            • #7
              Übergabe per Referenz.
              Ist übrigens das Standardverhalten der meisten Programmiersprachen und auch absolut korrekt! Da war die 4er-Version einfach noch nicht so weit ^^

              Kommentar


              • #8
                das weiß ich. Ich bin nur noch ein alter php4 hase

                Kommentar

                Lädt...
                X