Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [OOP] 'Budowa interfejsów bazodanowych'.
MagnuM
post
Post #1





Grupa: Zarejestrowani
Postów: 108
Pomógł: 0
Dołączył: 7.05.2004
Skąd: Jelenia Góra

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


Witam,
przeczytałem artykuł ze strony głównej pt. 'Budowa interfejsów bazodanowych' i zaintrygowała mnie kwestia dziwnych funkcji zawartych w umieszczonych tam klasach. Z resztą widziałem podobne w innych artykułach.

Przytocze tutaj taki przykład z sekcji artykułu zatytułowanej 'Składamy wszystko w całość'.

  1. <?php
  2. /* Notes:
  3.    $db - instance of ADOdb connection object.
  4.    $user - instance of the User DB Interface
  5.    $topic - instance of the Topic DB Interface
  6. */
  7. $db->StartTrans();
  8.  
  9. // update the user's total # of posts
  10. $user->setNumPosts($user->getNumPosts() + 1); // PRZYKŁAD
  11. $user->submit($db); // PRZYKŁAD
  12.  
  13. // update the topics # of messages
  14. $topic->setNumMessages($topic->getNumMessage() + 1);
  15. $topic->submit($db);
  16.  
  17. // create the new message
  18. $message = new Message();
  19. $message->setTopicID($topic->getTopicID());
  20. $message->setTopic($_POST['userTopic']);
  21. $message->setMessage($_POST['message']);
  22. $message->setPoster($user->getUserID());
  23. $message->submit($db);
  24.  
  25. $db->CompleteTrans();
  26.  
  27. ?>


Jaki jest sens używania tego typu funkcji jak tutaj: setNumPosts(), getNumPosts(), submit() ?
Wydaje mi się że kod:

  1. <?php
  2. $user->setNumPosts($user->getNumPosts() + 1);
  3. $user->submit($db);
  4. ?>


Można z powodzeniem zapisać tak:
  1. <?php
  2. $user->numPosts += 1; // przyjmujac ze w konstruktorze do zmiennej $numPosts wczytywana jest ilsoc posto
    w uzytkownika
  3. ?>


A później w destruktorze wysyłać do bazy zgromadzone przez cały czas działania skryptu dane.

Pozdrawiam.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
hwao
post
Post #2


Developer


Grupa: Moderatorzy
Postów: 2 844
Pomógł: 20
Dołączył: 25.11.2003
Skąd: Olkusz




Cytat
A później w destruktorze wysyłać do bazy zgromadzone przez cały czas działania skryptu dane.

Nie do końca, ponieważ często zachodzi potrzeba operacji na danych które powinny zostać uakualnione, jeżeli były to destruktor to różnie to bywa. Pisanie za każdym rażem unset" title="Zobacz w manualu php" target="_manual() też nie jest najlepszym pomysłem, dlatego właśnie stosuje się te metody.

Wspomne tylko jeszcze, że php udostepnia bardzo ubogi mechanizm dotyczący właściwości klasy.

@LBO: Mozna by próbować osiągnąć efekt o którym piszesz, korzystając z magicznej metody __get(), tylko sam nie wiem, jak z zwracaniem wyjątków (z tego co pamiętam to działają aż miło (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) )
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 10.10.2025 - 04:09