Pogledajte određenu poruku
Staro 28. 01. 2012.   #6
tasmaniski
profesionalac
Professional
 
Datum učlanjenja: 08.11.2010
Poruke: 211
Hvala: 68
78 "Hvala" u 32 poruka
tasmaniski is on a distinguished road
Default

Sto se tice pisanja automatizovanih testova tu je jasno da je bolje da je fat model, al reusability .. i ne bas iz mog iskustva
Da ne bi samo pisali teoriju dodacu neki dummy kod:

Ovako izgleda moj klasican model. Odradi se selekt podataka i vrati rezultat, obicno stavim da se proslede neki parametri, tipa: where, order, limit, itd.
PHP kôd:
class Application_Model_Event extends Zend_Db_Table_Abstract
{  
    function 
getEvents($date null){
        
$select $this->select()->from('event')->where('approved = true');
        if(
$date){
              
$select->where('date(start_date) = ?'$date);
        }
         return 
$this->fetchAll($select);
    }

Dok kontroler primi request obrati parametre, odradi upite na bazu koje treba i vrati rezultat u view.
PHP kôd:
class IndexController extends Zend_Controller_Action {
    public function 
indexAction() {
           
$month $this->_request->getParam('month');
           
$year $this->_request->getParam('year');
           
$day $this->_request->getParam('day');
           
           
// obrade se podaci i kreira ispravan format datuma  $date
           // eventualno se po potrebi pozovu jos neke funkcije i odrade upiti

           
$event_model = new Application_Model_Event();
           
$this->view->events $event_model->getEvents($date);
    }

Kod nije ispravan, sad sam ka sklepao cisto primera radi, Zend framework je u pitanju. Model ima funkciju "getEvents(...)" koji vraca podatke iz baze, sva ostala obrada podataka if()else() i dr. je u kontroleru.

E sad, da li bi bio ispravan primer Fat modela da sam u kontoleru stavio:

$event_model = new Application_Model_Event();
$this->view->events = $event_model->getEvents($_POST);

i time prepustio apsolutno sve na modelu ???


Iz mog gledanja reusability bi se smanjio jer bi ta funkcija radila samo za odredjene slucajeve(verovatno samo za jedan), dok bi za druge kontrolere morao da pisem novu funkciju "getEventsOther(..)" po nekim drugim kriterijumima, koja bi se razlikovala od prve za 20%, a DRYS postujem vise nego ista

Ne znam dal sam lep primer naveo, al bi voleo da vidim neki konkretan kod koji bi pokazao Fat model, po mogucstvu klasicne CRUD aplikacije.

Hvala na odgovorima, inace ova tema me muci vec duze vreme
Radio sam u timovima gde smo radili i sa fat modelima, jednostavno mi se to tad nije svidelo ...

Poslednja izmena od tasmaniski : 28. 01. 2012. u 18:38.
tasmaniski je offline   Odgovorite uz citat