Cytat
@e-Gandalf:
Hmm, a jak to się ma do iteratorów w PHP5? Bo różni ludzie wymyślali różne DAO, własne iteratory i abstrakcję. A potem przyszło PHP5 i to wszystko jest lekko nieaktualne, bo PHP5 ma własne iteratory, i to lepsze.
Ale iterator daje Ci tylko wygodna metoda przechowywania listy danych, a ja mowie o komunikacji ze strefa zewnetrzna. Nie zbierzesz do iteratora wierszy z bazy danych, bo tych wierszy moze byc tam 10 milionow. Lepiej sprecyzowac ile pobierac
Cytat
Czy metody getRow(), getNextRow(), itd, nie robią czegoś w rodzaju iteratora? No może więcej niż iterator bo z dostępem swobodnym, ale IMHO robienie samemu czegokolwiek co służy do iteracji przestaje mieć sens.
Pewnie. Dlatego Iterator czy Enumerator oficjalny z php5 mozna uzywac do zwracania wynikow tych funkcji.
Cytat
Zresztą zauważ że taki ogólny interfejs nie powinien mieć getRow(num), bo np. zapytanie SQL nie ma dostępu swobodnego - robisz query i dostajesz kolejne wiersze.
Podalem tylko przyklad, ale przedstawie Ci przyklad wdrozenia:
$x = $engine->services->getDefaultInput()::createStream();
$x->setInitPoint('localhost'.'baza','user','haslo','tablica');
/* i czesc uniwersalna */
$x->getRow(4);
i jesli getDefaultInput() jest wskaznikiem na MysqlInput to polaczy sie z baza danych i ustawi sobie query na tablice "tablica". Nastepnie getRow(4) wywoluje zapytanie 'select * from tablica limit 4,1'
To oczywiscie tylko przyklad, pewnie nalezaloby to wykonac troche inaczej, ale da sie

A na dodatek, potem, transparentnie dla API mozesz cachowac to query i np. trzymac w bazy wyniki, aby drugie zapytanie o getRow(4) zwracalo zawsze z cache, chyba, ze $x wykonywal metody set/update (czyli istnieje ryzko, ze dane byly modyfikowane).
Cytat
Taki Input musiałby cacheować całość wyniku, a to nie jest optymalne. Więc lepiej pozostać przy dostępie sekwencyjnym.
Nie koniecznie

Moglby, ale nie musialby. Wszystko zalezy jak zbudujesz klase, i do czego bedzie uzywana.
Cytat
A może POST i zapytanie do bazy są na tyle różne, że nie da się ich wcisnąć w ten sam interfejs?
No, interfejsu do Posta jeszcze nie robilem, ale wydaje mi sie, ze da sie. A jak ktos sie uprze to moze zrobic interfejsy dziedziczne ObjectInput i ListInput gdzie dziedziczyc po ListInput beda klasy odpowiedzialne za baze danych, rdf, tablice, skrzynke pocztowa i inne formy wielokrotnie powtarzajacych sie danych, a ObjectInput bedzie przyjmowal obiekt HttpResponseInput z wlasciwosciami argumentow _POST|_GET, XmlInput, TextFileInput itp.
Cytat
Może lepiej zrobić Input (tylko sekwencyjny) i CachedInput (extends Input + swobodny)? Hmm, jeszcze trochę i sam się zakręcę...
Mozliwosci sa ogromne, a w tej kwestii w php standardu jeszcze nie ma zadnego.