Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    44

    passaggio per riferimento oggetti

    Salve, ho un problemino con i passaggi per riferimento degli oggetti in php 4, metto un esempio del prob, così mi spiego meglio:

    class prova1
    {
    function prova1()
    {
    $this->valore = 'valore iniziale';
    }

    function set_valore($val)
    {
    $this->valore = $val;
    }

    var $valore;
    }

    class prova3
    {
    function prova3(&$val)
    {
    $this->val = $val;
    }

    var $val;
    }

    class prova2
    {
    function prova2(&$val)
    {
    $this->val = &$val;

    $this->pro3 = new prova3($this->val);
    }

    var $val;
    var $pro3;
    }

    class prova5
    {
    function prova5()
    {
    $this->p1 = new prova1();
    $this->p2 = new prova2($this->p1);
    $this->p3 = new prova3($this->p1);
    }

    function mod_val_p1()
    {
    $this->p1->set_valore('modificato da prova5');
    }

    var $p1;
    var $p2;
    }

    $pro5 = new prova5();
    $pro5->mod_val_p1();

    echo 'In prova5 c\'è: '.$pro5->p1->valore.'
    ';
    echo 'In prova3 c\'è: '.$pro5->p3->val->valore.'
    ';
    echo 'In prova2 c\'è: '.$pro5->p2->val->valore;


    //Output
    /*
    In prova5 c'è: modificato da prova5
    In prova3 c'è: valore iniziale
    In prova2 c'è: modificato da prova5
    */


    Quello che vorrei è che anche prova3 facesse riferimento alla stessa istanza di prova1, ma nel passaggio "$this->pro3 = new prova3($this->val);" mi sa che si crea una copia invece di un riferimento.... c'è qualcuno che saprebbe darmi una mano?
    grazie mille
    Giugallo

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    44
    forse mettere tutto quel codice non è stata una buona idea, il mio problema era semplicemente questo:
    se passo un oggetto per riferimento ad una funzione che a sua volta lo vuole ripassare per riferimento ad un'altra funzione, come faccio a fare in modo che l'ultima istanza sia la stessa della prima... cioè:

    $element = new Element();

    func1($element);

    func1(&$element)
    {
    //$element è lo stesso, è un riferimento

    func2($element);
    }

    func2(&$element)
    {
    //$element non è più lo stesso, ma una copia
    }

    Giugallo

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    44
    ops tutto ok... mancava un & chiedo scusa
    Giugallo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.