Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Data Objects i Data Access Objects
become
post
Post #1





Grupa: Zarejestrowani
Postów: 88
Pomógł: 0
Dołączył: 12.01.2007

Ostrzeżenie: (0%)
-----


Witam. Chciałbym trochę rozwinąć myśl NoiseMC. Bo Twoje podejście mnie lekko zaintrygowało.

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

  1. <?php
  2. class ArticleInfo() {
  3.  
  4.  var $id;
  5.  var $title;
  6.  var $info;
  7.  var $oAuthor;
  8.  
  9.  function __construct ($id=null, $title=null, $info=null, Author $author=null) {
  10. $this->id=$id;
  11. $this->title=$title;
  12. $this->info=$info;
  13. $this->oAuthor=$author;
  14.  }
  15.  
  16.  function getTitle() {
  17. return $this->title;
  18.  }
  19. }
  20.  
  21.  
  22. class ArticleInfo_Model($oDB) {
  23.  
  24.  var $oDB;
  25.  
  26.  function getArticleInfoById($id) {
  27.  $sQ="SELECT *
  28.  FROM articles
  29.  WHERE id_article=?";
  30.  
  31. $aArticle=$this->$oDB->getRow($sQ, array($id));
  32.  
  33. if (!is_null($aArticle) {
  34.  $modelAuthor=new Author_Model($this->oDB);
  35.  $oAuthor=$modelAuthor->getAuthor($aArticle['authorid');
  36.  return new ArticleInfo($id, $aArticle['title'], $aArticle['info'], $oAuthor);
  37. }
  38.  }
  39. }
  40.  
  41. class Author() {
  42.  
  43.  var $id;
  44.  var $firstname;
  45.  var $lastname;
  46.  var $email;
  47.  var $login;
  48.  var $password;
  49.  
  50.  function __construct($id=null, $firstname=null, $lastname=null, $email=null, $login=null, $password=null) {
  51. $this->id=$id;
  52. $this->firstname=$firstname;
  53. $this->lastname=$lastname;
  54. $this->email=$email;
  55. $this->login=$login;
  56. $this->password=$password;
  57.  }
  58.  
  59.  function getId() {
  60. return $this->id;
  61.  }
  62.  
  63.  function getFirstName() {
  64. return $this->firstname;
  65.  }
  66.  
  67.  
  68. }
  69.  
  70. class Author_Model($oDB) {
  71.  
  72.  var $oDB;
  73.  
  74.  function getAuthor($id) {
  75.  
  76. $sQ="
  77. SELECT * FROM author WHERE id_author=?
  78. ";
  79.  
  80. $aAuthor=$this->$oDB->getRow($sQ, array($id));
  81.  
  82. if (!is_null($aAuthor) {
  83.  return new Author($id, $aAuthor['firstname'], $aAuthor['lastname'], $aAuthor['email'], $aAuthor['login'], $aAuthor['password']);
  84. }
  85.  }
  86. }
  87. ?>


i teraz wykorzystanie

  1. <?php
  2. $oDB=new DB();
  3.  $oDB->connect(DSN);
  4.  
  5.  $html=new Smarty();
  6.  
  7.  $modelArticleInfo=new ArticleInfo_Model($oDB);
  8.  $oArticleInfo=$modelArticleInfo->getArticleInfoById(34);
  9.  
  10.  $html->assign("article",$oArticleInfo);
  11. ?>


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

Ten post edytował become 30.11.2007, 12:44:08


--------------------
Darmowy Kreator Stron Internetowych
NR1 W Polsce - Portal Społecznościowo-Randkowy
Pozycjonowanie - najlepsze polskie narzędzie
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 21:44