W modelu Zend Framework Quickstart nastąpiła zmiana w modelach rozszerzających Zend_Db_Table_Abstract
na wzorzec bramy danych tabel.Zend Framework ORM-tablica danych tabeli vs. rozszerzenie Zend_Db_Table_Abstract
Osobiście nie miałem zbyt dużego doświadczenia z tym wzorcem i nadal słyszę, że najprawdopodobniej będzie on stosowany zamiast starego sposobu.
Krótki przykład z QuickStart:
stary sposób:
class Default_Model_Guestbook extends Zend_Db_Table_Abstract
{
protected $_name = 'tablename';
// do stuff
}
nowy sposób:
// The actual model
class Default_Model_Guestbook
{
protected $_comment;
protected $_created;
protected $_poster;
// list continues with all columns
}
// Dbtable for this model
class Default_Model_DbTable_Guestbook extends Zend_Db_Table_Abstract
{
/** Table name */
protected $_name = 'guestbook';
}
// Mapper
class Default_Model_GuestbookMapper
{
public function save($model);
public function find($id, $model);
public function fetchAll();
}
Z mojego brakuje doświadczenia z tego stylu programowania , Trudno mi zrozumieć actua Korzystam z tego ostatniego sposobu; Rozumiem, że ta metoda w jak największym stopniu oddziela bazę danych od rzeczywistej logiki, co teoretycznie powinno ułatwić przejście na inną platformę bazodanową. Jednak naprawdę nie widzę, aby tak się działo w każdym projekcie, nad którym pracuję.
Nie ma prawie żadnych wątpliwości, że coś przeoczam, dlatego chciałbym usłyszeć twoją radę.
Pytanie:
Czy ktoś mógłby mi wyjaśnić, dlaczego (lub jeśli) ten ostatni jest lepszy praktyka?
powinienem przełączyć ze starej drodze do nowej drogi lub są nadal uzasadnione powody do przyklejania z modeli, które reprezentują tabele bazy danych?
Z góry dziękuję.
Naprawdę nie jest to odpowiedź, więc to ona. Po kilku latach dowiedziałem się, że abstrakcja jest formą sztuki, sztuka nie zawsze ma powody. Dziś streszczam minimum potrzebne i robię rzeczy, więc będę musiał kodować tak mniej, jak to możliwe, co w twoim przypadku, jeśli dodasz ten dodatkowy poziom abstrakcji, nie nastąpi. –
Aby wyjaśnić, Zend_Db_Table * jest * implementacją wzorca TDG/RDG. To, co się dzieje, to to, że przechodzą do patteru Mapowania Danych. – jason