Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Jakie metody w klasie News - jak ma to współgrać?
Joachim Peters
post
Post #1





Grupa: Zarejestrowani
Postów: 196
Pomógł: 2
Dołączył: 1.03.2006

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


Witam,

jestem po lekturze naprawdę wielu tematów na tym forum, w okręg moich zainteresowań weszła także książka "PHP5 Obiekty, wzorce, narzędzia".
Mimo to mam problem co do ułożenia odpowiedniej klasy. Moje problemy:

1. Czy w klasie np. do obsługi newsów powinna znajdować się metoda do wyświetlania konkretnego newsa/newsów jeżeli nie stosuje ścisłego MVC (chce napisać stronę zintegrowaną z innym skryptem od którego będę używał kilka klas i funkcji, m.in. do wyświetlania w przeglądarce html)? Jeżeli nie to powinienem zrobić dla niej osobną funkcję (bez klasy)?

2. Idąc dalej przykładem klasy do obsługi newsów chciałbym zapytać czy lepiej definiować ID newsa już w konstruktorze czy ustalać go manualnie przez metodę np. setId()?

3. Czy opłaca się stworzyć osobną metodę do dodawania elementów do tablicy z danymi newsa (np. addParam($key, $value)(IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) , czy wyjdzie na to samo (w sensie obiektowym) przekazując pełną tablicę prosto do metody np. update()?

Poniżej zarys klasy:
  1. <?php
  2. class News {
  3. private $newsId  = 0;
  4. private $params = array();
  5.  
  6. public function setId($id) { } // Ustawia id newsa na którym chcemy operować
  7. public function submit() { } // Jeżeli newsId > 0 to aktualizuje, jeśli odwrotnie to tworzy nowy rekord
  8. private function insert() { }
  9. private function update() { }
  10. public function delete() { }
  11. public function addParam($key, $value) { } // Dodaje parametry typu nazwa newsa, autor, treść, źródło do tablicy danych
  12. public function print() { } // Wyświetla newsa, jeżeli ustaliliśmy Id do wyświetla wybrany news, jeżeli nie to
     wszystkie
  13. private function printSpecific() { } 
  14. private function printAll($perPage) { }
  15. }
  16. ?>


Jest tu sens OOP? Co zmienić aby było lepiej?

Pozdrawiam i z góry serdecznie dziękuje za wyjaśnienia!
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Cysiaczek
post
Post #2





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Globalsów się nie używa... bo nie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Singletona się używa ostrożnie - w uzasadnionych przypadkach (np. obiekt kontrolujący bazę danych)
Rejestru się używa i jest on dobrym wzorcem - trzeba mieć niepokolei w głowie, żeby twierdzić inaczej
Klasy statyczne stosuje się tam, gdzie trzeba (co już powiedzieli moim przedmówcy) i nie jest to żadne udziwnienie

Masz mętlik w głowie? Świetnie, powtarzaj mantrę "wszystko zależy od okoliczności, wszystko zależy od okoliczności, wszystko zależy od okoliczności" - codziennie przez godzinę (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)

Pozdrawiam.
Go to the top of the page
+Quote Post
Sedziwoj
post
Post #3





Grupa: Zarejestrowani
Postów: 793
Pomógł: 32
Dołączył: 23.11.2006
Skąd: Warszawa

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


Cytat(Cysiaczek @ 2.09.2008, 07:08:11 ) *
Globalsów się nie używa... bo nie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Zgodzę się
Cytat
Singletona się używa ostrożnie - w uzasadnionych przypadkach (np. obiekt kontrolujący bazę danych)

Nie zgodzę się, a co jak chcesz mieć parę różnych połączeń w jednej chwili? Już miałem przyjemność z singletonem, więc musiałem napisać okropny kod, bo nie było czasu na przerobienie tej konstrukcji. (Propel jak wiesz pozwala na wiele połączeń, mimo że jak się używa jednego,to jest to nie zauważalne)
Cytat
Rejestru się używa i jest on dobrym wzorcem - trzeba mieć niepokolei w głowie, żeby twierdzić inaczej

Czy takim dobrym, to bym nie był pewien, ale na pewno lepszy niż Globals
Cytat
Masz mętlik w głowie? Świetnie, powtarzaj mantrę "wszystko zależy od okoliczności, wszystko zależy od okoliczności, wszystko zależy od okoliczności" - codziennie przez godzinę (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)

Tylko wątpię aby to pomogło ;]
@Black-Berry
Dwie rzeczy, doświadczenie (praktyka) z różnymi rozwiązaniami, powie Ci co jest lepsze. Bo to jest lepsze, co potem pozwala Ci szybciej i wygodniej pracować. Ponieważ te wszystkie rzeczy, OOP, Design Patterns itd. są po to, aby w przyszłości korzystanie z tak napisanych elementów było łatwo korzystać, i jak już trzeba coś dodać/zmienić, aby to była chwila.
Ale to nie jest tak, że jest jedno poprawne rozwiązanie, każdy programista ma swoje preferencje i stąd wynikają te różnice, ale do ogólnych spraw raczej większość jest zgodna.
Niestety, tylko doświadczenie w pisaniu i korzystaniu z różnych rozwiązań da Ci pewną pewność jak to rozwiązać... Więc czytaj, korzystaj, pisz i analizuj, jak się sprawują jakieś rozwiązania, próbuj różnych, ogólnie polecamy Propel, Synfony (może jeszcze parę) dla tego, że są przyzwoicie napisane, jak będziesz z nich korzystać, to zobaczysz że jest to wygodne i będziesz mógł podejrzeć jak inni to robią.
Go to the top of the page
+Quote Post

Posty w temacie
- Joachim Peters   Jakie metody w klasie News - jak ma to współgrać?   28.08.2008, 17:49:48
- - LBO   Generalnie to zależy od ciebie, ale jeżeli obiekt ...   28.08.2008, 18:03:52
- - terabit   @LBO takie pytanko czy jest jakas roznica miedzy...   28.08.2008, 18:07:02
- - LBO   Jest różnica, bo w metodach statycznych opakowujes...   28.08.2008, 18:17:59
- - Sedziwoj   Ogólnie chyba [PHP] pobierz, plaintext <?php$ne...   1.09.2008, 23:35:38
- - Black-Berry   Po co te klasy statyczne? Mi się na przyk...   1.09.2008, 23:45:47
- - Sedziwoj   @Black-Berry A co daje podejście obiektowe, przeci...   2.09.2008, 00:17:20
|- - Black-Berry   Cytat(Sedziwoj @ 2.09.2008, 01:17:20 ...   2.09.2008, 00:46:13
- - LBO   Cytat(Sedziwoj @ 2.09.2008, 00:35:38 ...   2.09.2008, 00:28:26
|- - Sedziwoj   Cytat(LBO @ 2.09.2008, 01:28:26 ) Moż...   2.09.2008, 00:39:38
- - LBO   Heeh, ja to wiem. Pytam się czy takie rozbicie jes...   2.09.2008, 01:41:32
- - Cysiaczek   Globalsów się nie używa... bo nie Singletona się ...   2.09.2008, 06:08:11
|- - Sedziwoj   Cytat(Cysiaczek @ 2.09.2008, 07:08:11...   2.09.2008, 07:41:13
- - Black-Berry   @Sedziwoj Z tego co mówisz pośrednio wynika, ...   2.09.2008, 10:24:36
|- - Sedziwoj   Cytat(Black-Berry @ 2.09.2008, 11:24...   2.09.2008, 10:38:34
|- - Black-Berry   Cytat(Sedziwoj @ 2.09.2008, 11:38:34 ...   2.09.2008, 10:44:28
- - Cysiaczek   Dlaczego tak wszyscy nie lubią Registry? Przecież ...   2.09.2008, 10:39:49
- - Sedziwoj   @Cysiaczek Bo taki Registry, wydaje mi się niedale...   2.09.2008, 10:46:11
|- - Black-Berry   Cytat(Sedziwoj @ 2.09.2008, 11:46:11 ...   2.09.2008, 10:48:04
|- - Sedziwoj   Cytat(Black-Berry @ 2.09.2008, 11:48...   2.09.2008, 11:03:09
- - Cysiaczek   CytatRegistry jest o tyle brzydki że trzeba wiedzi...   2.09.2008, 11:35:59
|- - Black-Berry   Cytat(Cysiaczek @ 2.09.2008, 12:35:59...   2.09.2008, 12:16:38
|- - Sedziwoj   Cytat(Black-Berry @ 2.09.2008, 13:16...   2.09.2008, 12:19:12
- - LBO   Cytat(Cysiaczek @ 2.09.2008, 12:35:59...   2.09.2008, 11:54:07
- - Black-Berry   @Cysiaczek A tak z ciekawości to czy problem ...   2.09.2008, 12:35:30
- - LBO   W takim przypadku jestem za Zendowym rozwiązaniem ...   2.09.2008, 13:14:46
- - Black-Berry   Chcesz zob aczyć coś magicznie ślic...   2.09.2008, 13:19:55
- - LBO   o_O mój boże Zrób z tego obiekt kontekstu. Umieść...   2.09.2008, 13:42:24
- - Black-Berry   A czy taki obiekt kontekstu przekazywany do kazdeg...   2.09.2008, 13:52:33
- - LBO   Nie bo w pełni kontroluję gdzie on jest dostępny.   2.09.2008, 13:58:18
- - Black-Berry   No to teraz już coś rozumiem... Ale w całym framew...   2.09.2008, 14:02:57
- - LBO   Hmmm... jeden i tylko jeden. Cały myk w tym, że ró...   2.09.2008, 14:10:05
- - Black-Berry   @LBO: Dostrzegam Powiedz mi jeszcze po co Ci są p...   2.09.2008, 14:43:26
- - LBO   A kiedy dublujesz settingsy? Powiem Tobie - kiedy ...   2.09.2008, 15:10:41
- - Black-Berry   @LBO wszystko super. Metoda Cysiaczka trochę ...   2.09.2008, 21:20:52
- - LBO   Cytat(Black-Berry @ 2.09.2008, 22:20...   2.09.2008, 21:26:34
|- - Black-Berry   Dzięki za rady:) Wezmę je pod uwagę przy pisaniu n...   2.09.2008, 21:29:34
- - Cysiaczek   To, co pokazałem, to pewna wariacja, a nie sprawdz...   2.09.2008, 21:28:13
|- - Sedziwoj   Cytat(Cysiaczek @ 2.09.2008, 22:28:13...   2.09.2008, 23:26:00
- - LBO   Cytat(Cysiaczek @ 2.09.2008, 22:28:13...   2.09.2008, 21:33:29


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: 28.12.2025 - 00:38