[ Valerij Zajcev @ 13.08.2010. 10:43 ] @
1) Da li u PHP-u postoji neka klasa koja se ponasa kao ArrayList u Javi. Znaci niz koji je prosiriv ima add, remove, contain, serch ... array u PHP-u se ponasa slicno nego se pitam da li ima neka specijalizovanija klasa za to?
2) U sledecem codu imam citanje podataka iz baze u objekat "Book" koji se smesta u array "Books", i imam problem kada probam da uradim casting u foreach petlji prijavljuje mi problem sintakse. Kako da kroz niz castujem svaki objekat da bih mogao da ga koristim?
Ovde radim sa bazom...
Code:

public function getBooks($searchType, $searchTerm) {
        ...        
            for($i = 0; $i < $numResults; $i ++) {
                $row = $result->fetch_assoc ();
                require_once 'vo/Book.php';
                
                $book = new Book ();
                
                $book->setTitle ( $row ['title'] );                
                $book->setAuthor ( $row ['author'] );                
                $book->setIsbn ( $row ['isbn'] );                
                $book->setPrice ( $row ['price'] );

                $books[] = $book;
            }
            
            $result->free ();
            $db->close ();
        
            return $books;
            
        } 
               ...    
    }

Ovde (je problem) radim view...
Code:

        require_once 'dal/BooksDal.php';
    
    $bDal = new BooksDal();
    $bDal->getInstance();
    
    $bDal->getBooks($searchType, $searchTerm);
    
    foreach($bDal as $b)
    {
        $b = (Book) $b; // ovde je greska "Syntax error, not expected $b" ?!        
    }
[ kazil @ 13.08.2010. 11:03 ] @
Za 1) pogledaj SPL

u 2) pokusavas da kastuje u Book? ako zelis da objekat pretvoris u niz, moras implementirati svoju metodu unutar tog objekta, tipa toArray() gde ces sam da pretumbas objekat u niz ($this->name u $arr['name'])
[ Aleksandar Ružičić @ 13.08.2010. 11:12 ] @
zasto bi uopste castovao? (inace u php-u ne mozes da castujes u neki custom objekat, samo u object) tebi getBooks vraca niz Book objekata. samo prepisi taj foreach ovako:
Code (php):

foreach( $bDal->getBooks($searchType, $searchTerm) as $b) {
    assert($b instanceof Book);  // $b je ovde Book
}
 


i jedan savet: makni taj require_once van for petlje.
[ Nikola Poša @ 13.08.2010. 11:44 ] @
Ne shvatam šta si hteo u tom tvom kodu... Zašto nigde nisi smestio rezultat ove linije koda:
Code:
$bDal->getBooks($searchType, $searchTerm);

Taj metod bi koliko vidim trebao da vrati niz, kojeg ti posle možeš da "vrtiš" u nekoj petlji. I zašto si pokušao da foreach-uješ $bDal instancu? To je valjda neki model, u kome imaš te neke metode za rad sa knjigama.

btw Ako hoćeš da članovima nekog objekta pristupaš notacijom uglastih zagrada, kao kad se pristupa nekom članu niza, onda klasa tog objekta treba da implementira ArrayAccess interfejs. Takođe, PHP varijanta te ArrayList klase u Javi koju si spomenuo je klasa ArrayObject.
[ Valerij Zajcev @ 13.08.2010. 14:59 ] @
Citat:

Ne shvatam šta si hteo u tom tvom kodu... Zašto nigde nisi smestio rezultat ove linije koda:
Code:
$bDal->getBooks($searchType, $searchTerm);

Taj metod bi koliko vidim trebao da vrati niz, kojeg ti posle možeš da "vrtiš" u nekoj petlji. I zašto si pokušao da foreach-uješ $bDal instancu? To je valjda neki model, u kome imaš te neke metode za rad sa knjigama.

Jao, moja greska... skoncentrisao sam se na drugu stvar a ovo sam prevideo...jbg jos se privikavam da nemam tipove :) Tnx