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
LBO
post
Post #2





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

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


Cytat(Sedziwoj @ 2.09.2008, 00:35:38 ) *
Ogólnie chyba
  1. <?php
  2. $news_2 = NewsPeer::getById(2);
  3. ?>
wykorzystanie DAO i AR ;] Czy jakoś tak to szło, mi się zawsze pojęcia mieszają.


Można i tak (Propel-way), ale czy przy tak niewielkim zastosowaniu trzeba rozbijać to na dwie klasy na tabelę?

Cytat(Black-Berry @ 2.09.2008, 00:45:47 ) *
Po co te klasy statyczne? Mi się na przykąłd cały kod strony ze strukturą, kategoriami i jakimś tam menu generuje w 50ms. Dojdę moze do 100ms ale to i tak nic nie zmienia bo złożoność obliczeniowa zawsze będzie rzędu On czyli liniowa. Co one własciwie dają ? (w sensie wydajnościowym)


Może nie dają nic, ale są bardziej czytelne? Po co tworzyć obiekt, skoro taki manager (jaki reprezentują metody statyczne) jest bezstanowy.
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(LBO @ 2.09.2008, 01:28:26 ) *
Można i tak (Propel-way), ale czy przy tak niewielkim zastosowaniu trzeba rozbijać to na dwie klasy na tabelę?


To był przykład, jak masz metody pobierające np. najnowsze News'y losowe, czy jakiekolwiek zbiory, to umieszczasz to tam, masz w jednym miejscu wszystkie metody pobierania News'ów, dzięki temu, jak jest wymagana poprawka, zmiana funkcjonalności, masz jedno miejsce do edycji (albo dobry punkt zaczepienia, przy większych zmianach). Czyli taki Peer operuje ogólnie na News'ach, a obiekty klasy News na konkretnym elemencie, i tam masz metody np. do pobierania autora, czy co tam będzie potrzebne, przy operowaniu na konkretnej News'ie.

P.S. Hibernate ma jeszcze bardziej to rozbite.
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: 27.12.2025 - 05:15