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.




Cytat
Registry jest o tyle brzydki że trzeba wiedzieć co w nim jest.

@sedziwoj - Tak? To patrz (IMG:http://forum.php.pl/style_emoticons/default/aaevil.gif)

Wybaczcie niedoróbki, ale to tylko mała prezentacja oparta o proste tablice.

  1. <?php
  2. interface Basic{}
  3. interface Advanced{}
  4.  
  5. class Config{}
  6. class fwConfig extends Config implements Basic{}
  7. class appConfig extends Config implements Basic{}
  8. class moduleConfig extends Config implements Advanced{}
  9.  
  10.  
  11. class Registry
  12. {
  13. static public $interfaces=array('Basic', 'Advanced'); // najlepiej zautomotyzować
  14. static public $collection=array();
  15.  
  16.  
  17. static public function add($obj)
  18. {
  19. foreach(class_implements($obj) as $iface)
  20. {
  21. if(in_array($iface, self::$interfaces))
  22. {
  23. self::$collection[$iface][get_class($obj)]=$obj;
  24. }
  25. }
  26. }
  27.  
  28. static public function getFor($obj)
  29. {
  30. $data=array();
  31. foreach(class_implements($obj) as $iface)
  32. {
  33. if(in_array($iface, self::$interfaces) && is_array(self::$collection[$iface]))
  34. {
  35. $data=array_merge($data, self::$collection[$iface]);
  36. }
  37. }
  38. return $data;
  39. }
  40.  
  41. public static function getBasicCollection()
  42. {
  43. return self::$collection['Basic'];
  44. }
  45.  
  46. public static function getAdvancedCollection()
  47. {
  48. return self::$collection['Advanced'];
  49. }
  50.  
  51. public static function getAll()
  52. {
  53. return self::$collection;
  54. }
  55. }
  56.  
  57. class News implements Basic,Advanced
  58. {
  59. public function __construct()
  60. {
  61. extract(Registry::getFor($this));
  62. print_r($fwConfig);
  63. }
  64. }
  65.  
  66. $f=new fwConfig();
  67. $a=new appConfig();
  68. $m=new moduleConfig();
  69.  
  70. print '<pre>';
  71. Registry::add($f);
  72. Registry::add($a);
  73. Registry::add($m);
  74. $obj=new News();
  75. print '</pre>';
  76. ?>


@BlackBerry - Proszę, Twoje globale (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Pozdrawiam
Go to the top of the page
+Quote Post
Black-Berry
post
Post #3





Grupa: Zarejestrowani
Postów: 663
Pomógł: 6
Dołączył: 3.06.2007
Skąd: Kraków

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


Cytat(Cysiaczek @ 2.09.2008, 12:35:59 ) *
<?php
 (..)
?>
@.@ śliczne... Nie będę może polemizował bo jedyne co mi się nasuwa to że to cholernie skąplikowane a jedno słówko kluczowe global robi to samo. Ale masz 3,5k postów i śliczną konstrukcję rejestru więc pewnie się na tym znasz lepiej. Jak sobie przemyślę głębiej to pogadamy (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)

Ten post edytował Black-Berry 2.09.2008, 12:18:25
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: 25.12.2025 - 19:10