Citat:
BigFoot: Koliko sam uspeo da vidim Zend nema klasu kojom možeš modelovati tabelu iz baze podataka i koristiti nešto tipa:
Code:
$data = Promet::model()->findAll();
već se koristi objekat klase Zend_Db, metoda select() kojoj se svaki put prosledjuje naziv tabele nad kojom se vrši upit:
Jesi siguran?

U okviru ZF-a i njegove
Db komponente imaš klasu
Zend_Db_Table, koja implementira
Table Data Gateway pattern, tako da dobijaš interfejs ka nekoj tabeli u bazi, u smislu da imaš metode kao što su insert(), update(), delete() (sa sve kaskadnim brisanjem i update-ovanjem),
find(), fetchAll(), fetchRow(), itd. Sve što treba da uradiš je ovo:
Code:
class Model_Foo extends Zend_Db_Table_Abstract
{
protected $_name = 'foo';
}
... i praktično već imaš gotov model za rad nad nekom tabelom. Meni npr. čak ni to nije dovoljno nego idem sa ORM-om (Object Relational Mapping), pri čemu mi klasa koju izvodim iz Zend_Db_Table postaje deo Data Mapper pattern-a, čisto da bih što više business logike mogao da "strpam" u model.
Da li tako nešto može taj Yii?

Čisto sumnjam...
Citat:
BigFoot: Isto tako, vidim da Zend koristi sirove SQL upite dok je to u Yii samo krajnji slučaj i koristi se samo kad se upit ne može drugačije modelovati, a što je često samo rezultat lošeg projektovanja baze.
Pa ti verovatno nikad nisi koristio ZF kad tako pričaš... Ta ista ZF-ova komponenta -
Db ima klasu
Zend_Db_Select, preko koje ti možeš da predstaviš neki upit u objektno-orijentisanom smislu. Ona je jako korisna kad treba dinamički da generišeš neki upit, na osnovu nekih uslova, itd. Korišćenjem ove klase ne moraš da misliš na escape-ovanje, quote-ovanje i sintaksu upita, kao i na razlike u sintaksi u zavisnosti od adaptera. Ja inače ne koristim tu klasu, jer mi je nekako lakše da idem sa tim, što ti kažeš, "sirovim" upitima, jer mi se čini da nepotrebno gubim na performansama kroz ceo taj proces generisanja upita preko Zend_Db_Select klase.
Citat:
BigFoot: Malo sam pogledao i forme kako se rade u Zend-u i opet je to u Yii daleko jednostavnije i elegantnije rešeno. Yii koristi (mada ne doslovce kao npr. Ruby on Rails) "Convention over Configuration" (CoC) i "Don't Repeat Yourself" (DRY) principe. Npr. kada u klasi Promet postoji akcija koja se zove actionPrikaz, ona će biti pozvana linkom promet/prikaz i sl.
Po mom mišljenju, nema boljeg rešenja što se tiče upravljanja formama od klase
Zend_Form. Ja inače koristim samo jedan mali deo te klase, tačnije, onaj zadužen za filtriranje i validaciju. Izvođenjem neke tvoje klase iz
Zend_Form, u cilju upravljanja nad nekom formom u tvojoj aplikaciji, dobijaš višestruke benefite. Sva logika oko validacije i filtriranja će se nalaziti u tom jednom modelu, a ako se odlučiš da korsitiš i dekoratore te iste klase, koji služe za renderovanje forme i njenih elemenata, moći ćeš da output-uješ celu formu echo-ovanje instance tog modela -
echo $form;, budući da klasa Zend_Form redefiniše __toString() metod. Mogao bi sad ja još dosta da pričam o toj klasi, al' najbolje je da baciš pogled na manual i sve će ti biti jasno...
Inače, ja ne znam da i jedan drugi framework tako dobro koristi moć objektno-orijentisanog PHP-a i design pattern-a, kao što je to slučaj sa Zend Framework. Evo možda bi bilo dobro da nam kažeš kako Yii stoji sa tim stvarima...