znovupoužitelnost funkcí, jak správně programovat?
- MzK
- Člen | 127
Nechci dibi::dataSource() a MVC paradox, podle mne to zbytečně zatěžuje DB → přenáší se celá tabulka, přestože chci jen některé řádky, možná se ale pletu.
šablona
– chci vypsat poslední články, náhodné
články, poslední komentáře a tagy ke stránce
Presenter
vypadá takto
No a modely
?
Přijde mi blbé, dělat pro každý SQL dotaz novou metodu v presenteru i modelu., Jak se taková věc řeší v praxi? Nebo to jinak nejde? Děkuji za nakopnutí správným směrem, s nette a MVC začínám.
- romansklenar
- Člen | 655
Podívej se na DibiFluent, je to SQL builder tzn něco jiného než DibiDataSource, na tento případ je to ideální.
- Honza Kuchař
- Člen | 1662
podle mne to zbytečně zatěžuje DB → přenáší se celá tabulka
To není pravda. MySQL sice má problém se složenými dotazy, ale o tom více zde. Rozhodně tak jako tak, se celý obsah netahá. Dalo by se použít i DibiFluent.
To co tu píšeš, je opravdu u jednoduchých app zbytečné. (potom
někteří slučují model + presenter
) Počítá se s tím, že
budeš mít obecnější model (který může být svým rozsahem
obrovský) a presenter ti z něj vytáhne konkrétní informace (už
jen to co tě opravdu zajímá) a ty poté předá šabloně (vykreslí
to uživateli hezky barevně). (alespoň tak jsem to
pochopil já)
Editoval honzakuchar (18. 11. 2009 22:43)
- iguana007
- Člen | 970
Možná to je od věci, ale zajímalo by mne proč nemůže být jen jedna funkce v modelu v podobě:
public function getArticles($limit, $random=false) {
if ($random) {
return dibi::fetchAll('SELECT url,name FROM `blog` WHERE `public` = 1 ORDER BY RAND() LIMIT '. $limit);
} else {
return dibi::fetchAll('SELECT url,name FROM `blog` WHERE `public` = 1 ORDER BY id DESC LIMIT '. $limit);
}
}
Díky předem za vysvětlení.
igi
- Ondřej Mirtes
- Člen | 1536
iguana007 napsal(a):
Možná to je od věci, ale zajímalo by mne proč nemůže být jen jedna funkce v modelu v podobě…
Může, můžeš si to udělat jak chceš, ale tento způsob není příliš univerzální, ani příliš OOP. Prostě DibiDataSource (případně DibiFluent, které moc rád nemám, hlavně kvůli tomu, že bych nevěděl u spousty věcí, jak je zapsat) je way :)
- Honza Kuchař
- Člen | 1662
Prostě DibiDataSource případně DibiFluent je way :)
Souhlas, ale podle mě je to teda cesta. :)