Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 4 odgovora
  • 3.150 pregleda

Najnovija ↓

Kolekcije i casting problem/pitanje 13.08.2010. u 11:43 · pre 197 meseci #1
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" ?!        
    }
Re: Kolekcije i casting problem/pitanje 13.08.2010. u 12:03 · pre 197 meseci #2
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'])
Re: Kolekcije i casting problem/pitanje 13.08.2010. u 12:12 · pre 197 meseci #3
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.
Potpis
rafforum.rs - Forum Računarskog Fakulteta
Re: Kolekcije i casting problem/pitanje 13.08.2010. u 12:44 · pre 197 meseci #4
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.
Re: Kolekcije i casting problem/pitanje 13.08.2010. u 15:59 · pre 197 meseci #5
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
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme