[php 4] passaggio oggettiin array per riferimeno

ciao a tutti ecco il mio problema

come da oggetto

//creo degli oggetti istanziando una classe  "head"

$headx=new head($include,$ar_meta,$flashvars,$css,$js);      

//inserisco l'oggetto in un array per gestirlo inseguito tramite cicli ecc.

$h=&$headx; // (ho provato a passarla per riferimento)

array_push($this->_ar_obj_head, $h);

quando ricavo le info ricavando l'oggetto dall'array  $this->_ar_obj_head  lanciando un metodo get di questi tutto ok

quando invece cerco di lanciare un metodo di questo oggetto ricavato dall'array $this->_ar_obj_head che varia le proprieta dell'oggetto dopo non le ritrovo

qualche idea?

thanks

inviato 8 anni fa
dyd666
X 0 X

prova  con array_push($this->_ar_obj_head, &$h);

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

innanzitutto thanks per l'attenzione

la soluzione proposta l'avevo provata  ma mi da errore

sto provando in tanti modi

incollo un po di codice che ho realizzato per fare le prove dove si viene analizzato solo il problema

se tu vedi il metodo set non funziona ,

ovvero sembra funzionare su una copia dell'oggetto ma non sull'oggetto che ricavo con il get .

ho provato diverse soluzioni passando le i ritorni delle funzioni per riferimento e le varibili per riferimento ma niente

<?

class arObj

{

   var $_test;

   function ar_obj()

   {

      $this->test=0;

   }

   function getTest(){return $this->_test;}

   function setTest($param){$this->_test=$param;}   

}

class managerTest

{

   var $_ar_obj;

   function managerTest()

   {

      $this->_ar_obj=array();

      $this->riempiAr();

   }

   function riempiAr()

   {

      for($i=0;$i<3;$i++)

      {

         $obj=new arObj();

         $obj->setTest($i);

         $this->_ar_obj[]=$obj;

      }

      echo "<pre>";

      echo var_dump($this->_ar_obj);

      echo "</pre>";      

   }

   function setObj($param,$val)

   {

      $obj=$this->_ar_obj[$param];

      $obj->setTest($val);

      echo "<pre>";

      echo var_dump($obj);

      echo "</pre>";         

   }

   function getObj($param)

   {

        //$obj->setTest(5);

       //$this->setObj(2,6);

       $obj=$this->_ar_obj[$param];

       $val = $obj->getTest();

       return $val;

   }

}

$prova = new managerTest();

$prova->setObj(1,5);

$val=$prova->getObj(1);

echo $val;

?>

risposto 8 anni fa
dyd666
X 0 X

il problema è avere PHP4 a portata di mano per fare qualche test...

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

capito ..

che dire io vorrei avere php5 sul server ehehehe

il fatto è che ho realizzato tutto in questa maniera mi mancavano solo le classi manager

ero andato spedito e sicuro perchè è un sistema che uso abitualmente in actionscript

ed ora non so che fare acciperbaccolina :-p

sigh sigh sob sob , come dico sempre....meglio che mi imparavo zappatore

risposto 8 anni fa
dyd666
X 0 X

trovato

l'errore stava nel metodo setObj , era li' che non prendevo per riferimento

function setObj($param,$val)

{

     $obj=&$this->_ar_obj[$param];

     $obj->setTest($val);

}

ed ora potrò dormire in santa pace.....la zappa aspetterà almeno fino a dopodomani ;-)

risposto 8 anni fa
dyd666
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda