class QueryIterator implements Iterator { private $result; private $connection; private $data; private $key=0; private $valid; function __construct($dbname, $user, $password) { $this->connection = pg_connect("host=localhost port=5432 dbname={$dbname} user={$user} password={$password}"); } public function exceute($query) { $this->next(); } { return $this->data; } { return $this->key; } { { $this->valid = true; $this->key+=1; } else $this->valid = false; } public function valid() { return $this->valid; } } $qi = new QueryIterator("moja_baza", "use5454" , "65454544444"); $qi -> exceute("select name, email from users"); while ($qi -> valid()) { }
Staram się zrozumieć działanie tej klasy. Ale nie do końca wiem co się dzieje .
Zacznę więc od początku :
W utworzonej instancji klasy QueryIterator wywołujemy metodę konstruktora i łączymy się z bazą postgresql.
Następnie wywołujemy metodę exceute w której tworzymy zapytanie do bazy danych na podstawie utworzonego identyfikatora połączenia właściwości connection i zaptyania query. Następnie przypisujemy wynik do właściwości result. Następnie sprawdzamy czy zapytanie zwróciło nam co najmniej jeden wiersz i jeśli tak to wywołujemy kolejna metodę next().
Tu tez nie rozumiem dlaczego ona musi nazwać się next() skoro to nazwa metody ? Z tego co mi się wydaje w definicji metody next(); jej dziłanie jest następujące.
z wyniku zapytania czyli z właściwości result tworozna jest tablica asocjacyjna, która zwraca wynik do właściwości data. Właściwość valid w przypadku pozytywnego zwrócenia wyniku otrzymuje wartość true, a właściwość key zwiększa swoją wartość klucza z 0 o jeden z każdym wywołaniem metody next . Oczywiście wartość false dla właściwości valid wystąpi gdy wywołanie metody nastąpi gdy pg_fetch_assoc nie zwróci wyniku.
No a co dalej to już nie mam pojęcia.
Bo nie wiem co się dzieje i jak są wywoływane metody
public function rewind() {}
public function current()
Proszę o jakieś wytłumaczenie jak działa ta klasa. Niestety autor książki nie opisał, dokładnie sposobu działania klas i tak muszę sam dociekać co i jak .
Dlatego proszę o napisanie co się dzieje dalej.