Rozumiem że wynika ono z modelu MVC ?
Mam pytanie odnośnie tego co napisłeś.
Jak skorelowac ze sobą konkretny obiekt Model i nie-Model ?
Chodzi mi o to, że jeżeli utworzę dwie klasy to bede mial 2 obiekty. Jezeli Data Object ma przechowywać tylko dane, to rozumiem, że nie powinien on mieć wogóle metod manipulującymi danymi ? Nawet gettery ?
Załużmy taką sytuację.
pobieram z bazy Artykul. Chcialbym zmienic mu opis i zrobic update danych na bazie.
Czy dobrze rozumiem, ze klasa Data Access Objects zajmuje sie pobieraniem danych i zwracaniem obiektu a po poprawieniu przekazuje obiekt to Data Access Objects i go zapisuje ?
Chyba ze umiescic go w klasie model na stale. No nie wiem.
Np. Mam taką klase
<?php class ArticleInfo() { var $id; var $title; var $info; var $oAuthor; function __construct ($id=null, $title=null, $info=null, Author $author=null) { $this->id=$id; $this->title=$title; $this->info=$info; $this->oAuthor=$author; } function getTitle() { return $this->title; } } class ArticleInfo_Model($oDB) { var $oDB; function getArticleInfoById($id) { $sQ="SELECT * FROM articles WHERE id_article=?"; $modelAuthor=new Author_Model($this->oDB); $oAuthor=$modelAuthor->getAuthor($aArticle['authorid'); return new ArticleInfo($id, $aArticle['title'], $aArticle['info'], $oAuthor); } } } class Author() { var $id; var $firstname; var $lastname; var $email; var $login; var $password; function __construct($id=null, $firstname=null, $lastname=null, $email=null, $login=null, $password=null) { $this->id=$id; $this->firstname=$firstname; $this->lastname=$lastname; $this->email=$email; $this->login=$login; $this->password=$password; } function getId() { return $this->id; } function getFirstName() { return $this->firstname; } } class Author_Model($oDB) { var $oDB; function getAuthor($id) { $sQ=" SELECT * FROM author WHERE id_author=? "; return new Author($id, $aAuthor['firstname'], $aAuthor['lastname'], $aAuthor['email'], $aAuthor['login'], $aAuthor['password']); } } } ?>
i teraz wykorzystanie
<?php $oDB=new DB(); $oDB->connect(DSN); $html=new Smarty(); $modelArticleInfo=new ArticleInfo_Model($oDB); $oArticleInfo=$modelArticleInfo->getArticleInfoById(34); $html->assign("article",$oArticleInfo); ?>
W ten sposób wyciągam dane konkretnego artykułu (po jego ID).
I co o tym myslicie ? Czy to jest prawidłowo ?
Czy moglbym stworzyc np.
klasę Articles_Model, ktora zawieralalby metody zwracajace:
1. obiekt ArtykulInfo (class ArticleInfo)
2. obiekt Artykul (class Article)
3. lista info artykulow danej kategorii -> tablica obiektow class ArticleInfo