referenzen zend1 zend2



  • <?
        class reifen{
    
            function reifen($wahlauto){
                $wahlarray=array("porsche"=>"pvc", "ente"=>"gummi", "trabbi"=>"plaste und elaste");
                foreach ($wahlarray as $key=>$value)
                    if ($key==$wahlauto) 
                        $this->material=$value;
            }
            var $material;
        }
    
        class auto{
    
            function auto($name){
                $this ->name=$name;          
                $myreifen=&new reifen($name);
                $this->materialart=$myreifen->material;
            }   
            var $materialart;
        }
    
        $porsche=new auto("porsche");
        echo $porsche->materialart." porsche<br><br>";
    
        //kleiner call by value --- call by referenz test   
        $roterporsche=$porsche;
        $blauerporsche=&$porsche;
    
        echo $roterporsche->materialart." roterporsche<br>";
        echo $blauerporsche->materialart." blauerporsche<br>";
    
        $roterporsche->materialart=="neutestmaterialrot";
        echo $porsche->materialart." hier test rot porsche<br><br>";
    
        $blauerporsche->materialart="neutestmaterialblau";
        echo $porsche->materialart." hier test blau porsche<br><br>";
        //----end test
    
        //performantere lösung:
        $trabbi=&new auto("trabbi");
        echo $trabbi->materialart;
     ?>
    

    im fall porsche:

    $porsche=new auto("porsche");
    

    wird bei zend1 eine kopie von auto angelegt und erst im zweiten schritt in die variable $porsche kopiert.
    um das zu umgehen, soll man bei zend1 selbständig und explizit mit referenzoperator eine referenz erzeugen, damit nur einmal ein objekt angelegt und eine referenz darauf gelegt wird.. siehe trabbi.

    $trabbi=&new auto("trabbi");
    

    damit kommt man der idee von java nahe, wo alles call by value gesetzt wird..

    frage: der große unterschied zwischen der zendmaschine 1 und der zendmaschine 2 ist meines erlesens nach der unterschiedliche umgang mit referenzen. denn in zend2 soll es dann auch bei aufruf

    $porsche=new auto($porsche);
    

    von vornherein eine referenz sein. damit wollen die macher sich an die sprachen wie java annähern.

    aber:

    WIE steht es mit der abwärtskompatibilität??
    was ist, wenn ich heute meinen code mit referenz besetze, wenn dann die zend2 in php5 eingesetzt wird?
    ist es überhaupt sinnvoll, heute aus performancegründen auf die expliziten referenzen zu setzen, wird überall angeraten.. ich mache mir bloß sorgen, daß mal wieder alle codes überarbeitet werden müssen..


Anmelden zum Antworten