[ tiranin @ 20.04.2005. 19:21 ] @
Pre dva dana sam počeo da učim PHP i zaglupio sam se sa jednostavnim (?) problemom. Pokušao sam da napravim jednostavnu hijerarhiju tipa otac-dete, a da sve očeve smestim u neku kolekciju. I do nekog dela mi radi kako treba, a negde mi članovi niza nestanu. Da ne bih zbunjivao ovim uvodnim tekstom prilažem ceo kod. Code: <?php class Baza{ var $niz; function Baza(){ $this->niz = array(); } function add($o) { $this->niz[] = $o; } function getByNum($num){ if($num < 0) $num = 0; $broj = count($this->niz); if($num > $broj -1) $num = $broj - 1; if(($this->niz[$num] != NULL)) return $this->niz[$num]; else return FALSE; } } class Otac{ var $deca; var $datum; var $plata; function Otac($d, $c){ $this->deca = array(); $this->datum = $d; $this->plata = $c; } function add($dete){ $this->deca[] = $dete; $cnt = count($this->deca); $qq = $this->deca[$cnt - 1]; $ww = $this->getDete($cnt - 1); // radi testiranja echo '<br>add dete='.$qq->ime.'=='.$ww->ime; //radi OK echo '***'.$this->getBrojDece(); // } function getDete($num){ //ne gledati jer dovde i ne dolazi if($num < 0) $num = 0; $broj = count($this->deca); if($num > $broj -1) $num = $broj - 1; if(isset($this->deca[$num])) return $this->deca[$num]; else return FALSE; } function getBrojDece(){ echo '<br>broj='.count($this->deca); // u prvoj fazi radi,a posle ne $cnt = count($this->deca); return $cnt; } } class Dete{ var $ime; var $datum; var $napomena; function Dete($a, $d, $np = 'xx'){ $this->ime = $a; $this->datum = $d; $this->napomena = $np; } } function puniSve(){ $baza = new Baza(); //1. otac $o = new Otac('30.2.2005.','3000.00'); $baza->add($o); $l = new Dete('Panteilija','23.2.2005.'); $o->add($l); $l = new Dete('Jevrem','23.2.2005.'); $o->add($l); $l = new Dete('Ambrozije','23.2.2005.'); $o->add($l); //2 otac $o = new Otac('22.2.2005.','5000.00'); $baza->add($o); $l = new Dete('Sofronije','23.2.2005.'); $o->add($l); $l = new Dete('Trpimir','23.2.2005.'); $o->add($l); return $baza; } ?> <?php $baza = puniSve(); $currIndex = 0; echo '<br><b>Napunjeno!!</b>'; $otac = $baza->getByNum($currIndex) or die('Neuspelo dobijanje oca'); echo '<br>Otac='.$otac->datum.'==='.$otac->plata; // dovde radi kako treba // a dalje nece // razne varijante i nista ne prolazi $child = $otac->deca; echo '<br>$child='.$child; $ccc = count($child); echo '<br>broj ='.$ccc; $br = $otac->getBrojDece() or die('Neuspelo dobijanje broja'); echo '<br>broj ='.$br; for($i = 0; $i < $br; $i++){ $dd = $otac->getDete($i); echo '<br>'.$dd->ime.'--'.$dd->datum; } ?> Stavio sam neke komentare da bude jasnije. Preko funkcije puniSve() kreiram sve objekte i dodam ih nadređenim, koji ih čuvaju u nizu. Par echo naredbi je tu da pratim šta se dešava i punenje mi izgleda OK. Kada hoću posle da ih povlačim, uspem samo da uzmem objekat Otac iz klase Baza, i lepo ispišem njegove atribute, ali kada hoću da uzmem niz njegove dece ne uspevam. Verovatno sam oćoravio pa ne vidim koju glupost sam napravio, pa molim strpljive posetioce da mi otvore oči. Hvala |